diff --git a/web/App_Code/guadanGuestQueryController.cs b/web/App_Code/api/guadanGuestQueryController.cs similarity index 95% rename from web/App_Code/guadanGuestQueryController.cs rename to web/App_Code/api/guadanGuestQueryController.cs index 58acec1..4749bf0 100644 --- a/web/App_Code/guadanGuestQueryController.cs +++ b/web/App_Code/api/guadanGuestQueryController.cs @@ -33,6 +33,10 @@ public class guadanGuestQueryController: ApiController { query = query.Where(guest => guest.CheckInAt == search.searchCheckInDate); } + if(search.searchCheckOutDate != null) + { + query = query.Where(guest => guest.CheckOutAt == search.searchCheckOutDate); + } if(search.searchCheckInDateStart != null) { query = query.Where(guest => guest.CheckInAt >= search.searchCheckInDateStart); diff --git a/web/App_Code/api/guadanOrderGuestController.cs b/web/App_Code/api/guadanOrderGuestController.cs index aca81d9..fac10e7 100644 --- a/web/App_Code/api/guadanOrderGuestController.cs +++ b/web/App_Code/api/guadanOrderGuestController.cs @@ -116,7 +116,7 @@ public class guadanOrderGuestController : ApiController return BadRequest("床位在該時間段內已被占用"); if (model.followerNum.HasValue) { - if (_db.GuaDanOrderGuest.Any(a => a.FollowerNum == model.followerNum + if (_db.GuaDanOrderGuest.Any(a => a.FollowerNum == model.followerNum && a.GuaDanOrderNo == model.orderNo && a.StatusCode != "404" )) @@ -330,31 +330,31 @@ public class guadanOrderGuestController : ApiController [Route("api/guadanorderguest/xuzhu")] public async Task ExtendStay([FromBody] XuZhuModel model) { - //续住方法 + //續住方法 if (model == null) - return BadRequest("请求数据为空"); + return BadRequest("請求數據為空"); if (model.GuestUuid == Guid.Empty || model.GuestBedUuid == Guid.Empty) - return BadRequest("GuestUuid 或 GuestBedUuid 无效"); - var guest= await _db.GuaDanOrderGuest.FindAsync(model.GuestUuid); + return BadRequest("GuestUuid 或 GuestBedUuid 無效"); + var guest = await _db.GuaDanOrderGuest.FindAsync(model.GuestUuid); if (guest == null) { - return BadRequest("挂单不存在"); + return BadRequest("掛單不存在"); } - if(guest.BedUuid != model.GuestBedUuid) + if (guest.BedUuid != model.GuestBedUuid) { - return BadRequest("床位不正确"); + return BadRequest("床位不正確"); } - var bedIsCanUse = await RegionAndRoomAndBedSchedule.IsBedAvailableAsync(_db,model.GuestBedUuid, model.CurrentCheckoutDate, model.NewCheckoutDate); - if(!bedIsCanUse) + var bedIsCanUse = await RegionAndRoomAndBedSchedule.IsBedAvailableAsync(_db, model.GuestBedUuid, model.CurrentCheckoutDate, model.NewCheckoutDate); + if (!bedIsCanUse) { - return BadRequest("该床位在续住时间段内被预定,无法续住"); + return BadRequest("該床位在續住時間段內被預定,無法續住"); } var newStartDate = model.CurrentCheckoutDate.Date; var newEndDate = model.NewCheckoutDate.Date.AddDays(-1); if (newEndDate < newStartDate) - return BadRequest("续住日期区间无效"); + return BadRequest("續住日期區間無效"); for (var date = newStartDate; date <= newEndDate; date = date.AddDays(1)) { var newSchedule = new RegionAndRoomAndBedSchedule @@ -364,8 +364,8 @@ public class guadanOrderGuestController : ApiController TargetUuid = model.GuestBedUuid, GuaDanOrderGuestUuid = model.GuestUuid, ScheduleDate = date, - Title = "续住挂单", // 一天一条,开始和结束是同一天 - Description = "续住挂单", + Title = "續住掛單", // 一天一條,開始和結束是同一天 + Description = "續住掛單", UseType = 30, CreatedAt = DateTime.UtcNow }; @@ -373,8 +373,8 @@ public class guadanOrderGuestController : ApiController _db.RegionAndRoomAndBedSchedule.Add(newSchedule); } guest.CheckOutAt = model.NewCheckoutDate.Date; - await _db.SaveChangesAsync(); // 保存数据库操作 - return Ok(new { message = "续住成功" }); + await _db.SaveChangesAsync(); // 保存資料庫操作 + return Ok(new { message = "續住成功" }); } [HttpPost] [Route("api/guadanorderguest/cancel")] @@ -495,13 +495,13 @@ public class guadanOrderGuestController : ApiController //更新未來排程為取消 var latestCheckoutStr = _db.GuadanTimeSetting - .Select(a => a.LatestCheckOut) // 字符串 "HH:mm" + .Select(a => a.LatestCheckOut) // 字串 "HH:mm" .FirstOrDefault(); TimeSpan? latestCheckoutTime = null; if (!string.IsNullOrEmpty(latestCheckoutStr)) { - // 尝试解析字符串 + // 嘗試解析字串 if (TimeSpan.TryParse(latestCheckoutStr, out var ts)) { latestCheckoutTime = ts; @@ -588,7 +588,7 @@ public class guadanOrderGuestController : ApiController if (guest.BedUuid != null) { var bed = _db.RegionRoomBed.FirstOrDefault(b => b.Uuid == guest.BedUuid); - if(bed == null) + if (bed == null) { return BadRequest("入住床位不存在"); } @@ -598,10 +598,10 @@ public class guadanOrderGuestController : ApiController } else { - return BadRequest($"当前床位状态:{bed.RegionRoomBedStatus.Name} 不能入住"); + return BadRequest($"當前床位狀態:{bed.RegionRoomBedStatus.Name} 不能入住"); } } - else if(guest.BedUuid == null) + else if (guest.BedUuid == null) { return BadRequest("入住床位不存在"); } @@ -653,10 +653,10 @@ public class guadanOrderGuestController : ApiController } public class XuZhuModel { - public Guid GuestUuid { get; set; } // 不可为空 - public Guid GuestBedUuid { get; set; } // 不可为空 - public DateTime CurrentCheckoutDate { get; set; } // 当前退房时间 - public DateTime NewCheckoutDate { get; set; } // 新退房时间 + public Guid GuestUuid { get; set; } // 不可為空 + public Guid GuestBedUuid { get; set; } // 不可為空 + public DateTime CurrentCheckoutDate { get; set; } // 當前退房時間 + public DateTime NewCheckoutDate { get; set; } // 新退房時間 } } \ No newline at end of file diff --git a/web/App_Code/api/guadanStatisticsController.cs b/web/App_Code/api/guadanStatisticsController.cs index 0832389..a42ad98 100644 --- a/web/App_Code/api/guadanStatisticsController.cs +++ b/web/App_Code/api/guadanStatisticsController.cs @@ -21,39 +21,49 @@ public class guadanStatisticsController: ApiController //挂单统计:房间,床位,挂单笔数,挂单人数的统计 var now = DateTime.Now; - var roomCount = await _db.Room.Where(a => a.IsDeleted == false).CountAsync(); - var rooms = await _db.Room.Include(r => r.RegionRoomBed).ToListAsync(); - - var emptyRoomCount = rooms - .Where(r => r.RegionRoomBed.All(b => b.IsAvailableDuring(now, now, _db))) // 這裡就能用方法 - .Count(); - var bedCount = await _db.RegionRoomBed.Where(a => a.IsDeleted == false).CountAsync(); - var maleBedCount = await _db.RegionRoomBed.Where(a => a.IsDeleted == false && a.Gender == true).CountAsync(); - var femaleBedCount = await _db.RegionRoomBed.Where(a => a.IsDeleted == false && a.Gender == false).CountAsync(); - - var guadanTotalCount = await _db.GuaDanOrder.Where(a => a.IsDeleted == false).CountAsync(); - var guadanPeopleTotal = await _db.GuaDanOrderGuest.Where(a => a.IsDeleted == false).CountAsync(); - var guadanPeopleMale = await _db.GuaDanOrderGuest.Where(a => a.IsDeleted == false && a.followers.sex == "男眾").CountAsync(); - var guadanPeopleFemale = await _db.GuaDanOrderGuest.Where(a => a.IsDeleted == false && a.followers.sex == "女眾").CountAsync(); - dynamic bedCounts = await RegionAndRoomAndBedSchedule.GetAvailableBedCountsAsync(_db, DateTime.Now, DateTime.Now); - var guadanCurrentCount = await _db.GuaDanOrder.Where(a => now < a.EndDate).CountAsync(); - var guadanPeopleCurrent = await _db.GuaDanOrderGuest.Where( a => a.CheckOutAt > now).CountAsync(); - var guadanPeopleCurrentMale = await _db.GuaDanOrderGuest.Where(a => a.CheckOutAt > now && a.followers.sex == "男眾").CountAsync(); - var guadanPeopleCurrentFemale = await _db.GuaDanOrderGuest.Where(a => a.CheckOutAt > now && a.followers.sex == "女眾").CountAsync(); + var guadanTotalCount = await _db.GuaDanOrder + .Where(a => a.IsDeleted == false) + .Where(a => a.IsCancel == false) + .CountAsync(); + var guadanCurrentCount = await _db.GuaDanOrderGuest + .Where(guest => guest.StatusCode != "403") + .Where(guest => guest.StatusCode != "404") + .Select(guest => guest.GuaDanOrderNo) + .Distinct() + .CountAsync(); + var guadanPeopleTotal = await _db.GuaDanOrderGuest + .Where(a => a.IsDeleted == false) + .Where(guest => guest.StatusCode != "404") + .CountAsync(); + var guadanPeopleMale = await _db.GuaDanOrderGuest + .Where(guest => guest.StatusCode != "404") + .Where(a => a.IsDeleted == false && a.followers.sex == "男眾") + .CountAsync(); + var guadanPeopleFemale = await _db.GuaDanOrderGuest + .Where(guest => guest.StatusCode != "404") + .Where(a => a.IsDeleted == false && a.followers.sex == "女眾") + .CountAsync(); + var guadanPeopleCurrent = await _db.GuaDanOrderGuest + .Where(a => a.IsDeleted == false) + .Where(guest => guest.StatusCode != "404") + .Where(guest => guest.StatusCode != "403") + .Where( a => a.CheckOutAt >= now.Date) + .CountAsync(); + var guadanPeopleCurrentMale = await _db.GuaDanOrderGuest + .Where(a => a.IsDeleted == false) + .Where(guest => guest.StatusCode != "404") + .Where(guest => guest.StatusCode != "403") + .Where(a => a.CheckOutAt >= now.Date && a.followers.sex == "男眾") + .CountAsync(); + var guadanPeopleCurrentFemale = await _db.GuaDanOrderGuest + .Where(a => a.IsDeleted == false) + .Where(guest => guest.StatusCode != "404") + .Where(guest => guest.StatusCode != "403") + .Where(a => a.CheckOutAt >= now.Date && a.followers.sex == "女眾") + .CountAsync(); var result = new { - roomStatistics = new - { - roomCount = roomCount, - emptyRoomCount = emptyRoomCount, - bedCount = bedCount, - maleBedCount = maleBedCount, - femaleBedCount = femaleBedCount, - emptyBedCount = bedCounts.male + bedCounts.female, - emptyMaleBedCount = bedCounts.male, - emptyFemaleBedCount = bedCounts.female - }, guadanStatistics = new { guadanTotalCount = guadanTotalCount, // 总挂单次数 @@ -61,7 +71,7 @@ public class guadanStatisticsController: ApiController guadanPeopleTotal = guadanPeopleTotal, // 总挂单人数 guadanPeopleMale = guadanPeopleMale, guadanPeopleFemale = guadanPeopleFemale, - guadanPeopleCurrent = guadanPeopleCurrent, // 当前挂单人数 + guadanPeopleCurrent = guadanPeopleCurrent, // 已預約掛單人數 guadanPeopleCurrentMale = guadanPeopleCurrentMale, guadanPeopleCurrentFemale = guadanPeopleCurrentFemale } diff --git a/web/App_Code/api/guadanStatisticsTableController.cs b/web/App_Code/api/guadanStatisticsTableController.cs index ab521b3..289d647 100644 --- a/web/App_Code/api/guadanStatisticsTableController.cs +++ b/web/App_Code/api/guadanStatisticsTableController.cs @@ -63,16 +63,6 @@ public class guadanStatisticsTableController: ApiController .OrderBy(x => x.date) .ToList(); var todayDate = DateTime.Today; - dynamic today = statistics.FirstOrDefault(x => x.date == todayDate); - - if (today == null) - { - var todayCount = _db.RegionAndRoomAndBedSchedule - .Where(s => s.ScheduleDate == todayDate && !s.IsCancel) - .Count(); - - today = new { date = todayDate, todaytotalbookers = todayCount }; - } var bedcount = _db.RegionRoomBed .Where(a => a.IsDeleted == false) @@ -83,11 +73,6 @@ public class guadanStatisticsTableController: ApiController bedcount, roomcount, statistics, - today, - totalbookers = _db.RegionAndRoomAndBedSchedule - .Where(s => s.IsCancel == false) - .Where(s => s.ScheduleDate >= DateTime.Today) - .Count(), }; return Ok(result); diff --git a/web/App_Code/api/regionController.cs b/web/App_Code/api/regionController.cs index 5adf1c0..7d7eb61 100644 --- a/web/App_Code/api/regionController.cs +++ b/web/App_Code/api/regionController.cs @@ -107,7 +107,7 @@ public class regionController : ApiController && (s.ScheduleDate == null || (s.ScheduleDate >= startDate))) .Where(s => s.GuaDanOrderGuest.StatusCode != "403" && s.GuaDanOrderGuest.StatusCode != "404") - .OrderByDescending(a => a.ScheduleDate) + .OrderBy(a => a.ScheduleDate) .Select(s => new { s.Uuid, diff --git a/web/admin/guadan/index.aspx b/web/admin/guadan/index.aspx index a792648..76ef1cf 100644 --- a/web/admin/guadan/index.aspx +++ b/web/admin/guadan/index.aspx @@ -6,6 +6,9 @@ +
+ +
@@ -27,10 +30,10 @@ {{item.status}}