调整挂单统计,修改删除区域报错
This commit is contained in:
@@ -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);
|
||||
@@ -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<IHttpActionResult> 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; } // 新退房時間
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user