diff --git a/web/App_Code/api/guadanGuestQueryController.cs b/web/App_Code/api/guadanGuestQueryController.cs index 0abc658..fa92dde 100644 --- a/web/App_Code/api/guadanGuestQueryController.cs +++ b/web/App_Code/api/guadanGuestQueryController.cs @@ -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 { diff --git a/web/App_Code/api/guadanOrderController.cs b/web/App_Code/api/guadanOrderController.cs index 497ce3d..7cb068f 100644 --- a/web/App_Code/api/guadanOrderController.cs +++ b/web/App_Code/api/guadanOrderController.cs @@ -20,10 +20,19 @@ public class guadanOrderController : ApiController [Route("api/guadan/list")] public async Task 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; } } \ No newline at end of file diff --git a/web/admin/guadan/guest/index.aspx b/web/admin/guadan/guest/index.aspx index ac07da3..4f8ca6a 100644 --- a/web/admin/guadan/guest/index.aspx +++ b/web/admin/guadan/guest/index.aspx @@ -74,7 +74,7 @@ - 共 {{ }} 筆, 頁數: + 共 {{ total }} 筆, 頁數: 新建掛單
+ + @@ -28,10 +30,21 @@