Merge remote-tracking branch 'origin/hkj1003'

This commit is contained in:
2025-10-19 22:02:28 +08:00
6 changed files with 624 additions and 19 deletions

View File

@@ -66,6 +66,7 @@ public class guadanGuestQueryController: ApiController
checkoutdate = a.CheckOutAt,
guadanorderno = a.GuaDanOrderNo,
roomName = GetRoomAndBedString(a.RegionRoomBed),
statusName = a.RegionRoomBedStatus.Name
}).ToList();
return Ok(new
{

View File

@@ -20,10 +20,19 @@ public class guadanOrderController : ApiController
[Route("api/guadan/list")]
public async Task<IHttpActionResult> getGuadanList([FromBody] guadan_order_search_dto search)
{
var lastCheckoutTime = _db.GuadanTimeSetting.FirstOrDefault();
string lastCheckoutTimeStr = null;
if (lastCheckoutTime != null)
{
lastCheckoutTimeStr = lastCheckoutTime.LatestCheckOut;
}
var query = _db.GuaDanOrder
.Where(a => a.IsCancel == false)
.Where(a => a.IsDeleted == false);
if(!string.IsNullOrEmpty(search.guaDanOrderNo))
{
query = query.Where(order => order.GuaDanOrderNo == search.guaDanOrderNo);
}
if (search.guadanUser != null)
{
query = query.Where(order => order.BookerName == search.guadanUser);
@@ -45,7 +54,8 @@ public class guadanOrderController : ApiController
}
}
var total = query.Count();
var data = await query
var data1 = await query.ToListAsync();
var data = data1
.OrderByDescending(b => b.CreatedAt)
.Select(a => new
{
@@ -56,6 +66,14 @@ public class guadanOrderController : ApiController
created_at = a.CreatedAt,
updated_at = a.UpdatedAt,
notes = a.Notes,
is_timeout = !string.IsNullOrEmpty(lastCheckoutTimeStr) &&
_db.GuaDanOrderGuest
.Where(g => g.GuaDanOrderNo == a.GuaDanOrderNo && !g.IsDeleted && g.StatusCode == GuaDanOrderGuest.STATUS_CHECKED_IN)
.ToList()
.Any(g =>
g.CheckOutAt.HasValue &&
DateTime.Parse(g.CheckOutAt.Value.ToString("yyyy-MM-dd") + " " + lastCheckoutTimeStr) < DateTime.Now
),
activity = _db.activities
.Where(act => act.num == a.ActivityNum)
.Select(act => new
@@ -68,23 +86,23 @@ public class guadanOrderController : ApiController
.Where(c => c.GuaDanOrderNo == a.GuaDanOrderNo && c.IsDeleted == false)
.Where(c => c.RegionRoomBedStatus.Code != GuaDanOrderGuest.STATUS_CANCELLED)
.Count(),
statusName = _db.GuaDanOrderGuest
guadan_status = _db.GuaDanOrderGuest
.Where(g => g.GuaDanOrderNo == a.GuaDanOrderNo && a.IsDeleted == false)
.Where(g => g.StatusCode != GuaDanOrderGuest.STATUS_CANCELLED)
.All(g => g.StatusCode == "401") ? "預約" :
.All(g => g.StatusCode == "401") ? new { code=501, name="預約" }:
_db.GuaDanOrderGuest
.Where(g => g.GuaDanOrderNo == a.GuaDanOrderNo && a.IsDeleted == false)
.Where(g => g.StatusCode != GuaDanOrderGuest.STATUS_CANCELLED)
.All(g => g.StatusCode == "403") ? "全部退房" :
.All(g => g.StatusCode == "403") ? new { code = 502, name = "全部退房" } :
_db.GuaDanOrderGuest
.Where(g => g.GuaDanOrderNo == a.GuaDanOrderNo && a.IsDeleted == false)
.Where(g => g.StatusCode != GuaDanOrderGuest.STATUS_CANCELLED)
.Any(g => g.StatusCode == "402" && a.IsCancel == false) ? "正在入住" :
"部分退房"
.Any(g => g.StatusCode == "402" && a.IsCancel == false) ? new { code = 503, name = "正在入住" } :
new { code = 504, name = "部分退房" }
})
.Skip((search.page - 1) * search.pageSize)
.Take(search.pageSize)
.ToListAsync();
.ToList();
return Ok(new
{
total,
@@ -214,7 +232,7 @@ public class guadanOrderController : ApiController
{
return NotFound();
}
if (_db.GuaDanOrderGuest.Any(a => a.GuaDanOrderNo == guadan.GuaDanOrderNo))
if (_db.GuaDanOrderGuest.Any(a => (a.GuaDanOrderNo == guadan.GuaDanOrderNo) && a.StatusCode != "404"))
{
return BadRequest($"該掛單已經存在掛單蓮友,不能取消!");
}
@@ -280,6 +298,7 @@ public class guadanOrderController : ApiController
public string guadanUser { get; set; }
public int page { get; set; } = 1;
public int pageSize { get; set; } = 10;
public string guaDanOrderNo { get; set; } = null;
}
}