掛單
This commit is contained in:
1 parent
9e251fc7d4
commit
98ee587dc0
6 files changed
+1154
-216
No files matched your search
@@ -304,7 +304,122 @@ public class guadanOrderController : ApiController
|
||||
if (json != null && json.guest != null)
|
||||
{
|
||||
var guest = json.guest;
|
||||
if (((string)guest.uuid).StartsWith("temp"))
|
||||
{
|
||||
//建立掛單明細
|
||||
var new_guest = new GuaDanOrderGuest
|
||||
{
|
||||
GuaDanOrderNo = guest.guaDanOrderNo,
|
||||
Uuid = Guid.NewGuid(),
|
||||
StatusCode = GuaDanOrderGuest.STATUS_BOOKED, // 預約狀態
|
||||
RoomUuid = guest.roomUuid,
|
||||
BedUuid = guest.bedUuid,
|
||||
CheckInAt = guest.checkInAt,
|
||||
CheckOutAt = guest.checkOutAt,
|
||||
Sex = guest.gender,
|
||||
Handi = guest.handi,
|
||||
IsDeleted = false,
|
||||
Name = guest.name,
|
||||
OrderUuid=guest.orderUuid,
|
||||
};
|
||||
//_db.GuaDanOrderGuest.Remove(old);
|
||||
_db.GuaDanOrderGuest.Add(new_guest);
|
||||
|
||||
int totalDays = (new_guest.CheckOutAt.Value - new_guest.CheckInAt.Value).Days;
|
||||
var bedList = new List<RegionAndRoomAndBedSchedule>();
|
||||
for (int i = 0; i < totalDays; i++)
|
||||
{
|
||||
var scheduleDate = new_guest.CheckOutAt.Value.AddDays(i);
|
||||
|
||||
var schedul = new RegionAndRoomAndBedSchedule
|
||||
{
|
||||
Title = "掛單",
|
||||
Description = "床位掛單",
|
||||
ScheduleDate = scheduleDate,
|
||||
IsDeleted = false,
|
||||
IsCancel = false,
|
||||
TargetUuid = new_guest.BedUuid,
|
||||
UseType = (int)RegionAndRoomAndBedSchedule.SchedulePurpose.Bed_Reservation,
|
||||
CreatedAt = DateTime.Now,
|
||||
GuaDanOrderNo = new_guest.GuaDanOrderNo,
|
||||
Uuid = Guid.NewGuid(),
|
||||
GuaDanOrderGuestUuid = new_guest.Uuid,
|
||||
};
|
||||
//_db.RegionAndRoomAndBedSchedule.Add(schedul);
|
||||
bedList.Add(schedul);
|
||||
}
|
||||
_db.RegionAndRoomAndBedSchedule.AddRange(bedList);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!Guid.TryParse((string)guest.uuid, out Guid targetGuid))
|
||||
{
|
||||
return BadRequest("無效的 GUID 格式");
|
||||
}
|
||||
|
||||
var old = _db.GuaDanOrderGuest.Where(a => a.Uuid == targetGuid).FirstOrDefault();
|
||||
if (old == null)
|
||||
{
|
||||
return BadRequest("未找到對應掛單明細資料");
|
||||
}
|
||||
|
||||
var sch = _db.RegionAndRoomAndBedSchedule.Where(a => a.GuaDanOrderGuestUuid == old.Uuid).ToList();
|
||||
if (sch != null)
|
||||
{
|
||||
_db.RegionAndRoomAndBedSchedule.RemoveRange(sch);
|
||||
}
|
||||
|
||||
|
||||
//建立掛單明細
|
||||
var new_guest = new GuaDanOrderGuest
|
||||
{
|
||||
GuaDanOrderNo = old.GuaDanOrderNo,
|
||||
Uuid = Guid.NewGuid(),
|
||||
StatusCode = GuaDanOrderGuest.STATUS_BOOKED, // 預約狀態
|
||||
RoomUuid = guest.roomUuid,
|
||||
BedUuid = guest.bedUuid,
|
||||
CheckInAt = guest.checkInAt,
|
||||
CheckOutAt = guest.checkOutAt,
|
||||
Sex = guest.gender,
|
||||
Handi = guest.handi,
|
||||
IsDeleted = false,
|
||||
Name = guest.name,
|
||||
|
||||
};
|
||||
_db.GuaDanOrderGuest.Remove(old);
|
||||
_db.GuaDanOrderGuest.Add(new_guest);
|
||||
|
||||
int totalDays = (new_guest.CheckOutAt.Value - new_guest.CheckInAt.Value).Days;
|
||||
var bedList = new List<RegionAndRoomAndBedSchedule>();
|
||||
for (int i = 0; i < totalDays; i++)
|
||||
{
|
||||
var scheduleDate = new_guest.CheckOutAt.Value.AddDays(i);
|
||||
|
||||
var schedul = new RegionAndRoomAndBedSchedule
|
||||
{
|
||||
Title = "掛單",
|
||||
Description = "床位掛單",
|
||||
ScheduleDate = scheduleDate,
|
||||
IsDeleted = false,
|
||||
IsCancel = false,
|
||||
TargetUuid = new_guest.BedUuid,
|
||||
UseType = (int)RegionAndRoomAndBedSchedule.SchedulePurpose.Bed_Reservation,
|
||||
CreatedAt = DateTime.Now,
|
||||
GuaDanOrderNo = new_guest.GuaDanOrderNo,
|
||||
Uuid = Guid.NewGuid(),
|
||||
GuaDanOrderGuestUuid = new_guest.Uuid,
|
||||
};
|
||||
//_db.RegionAndRoomAndBedSchedule.Add(schedul);
|
||||
bedList.Add(schedul);
|
||||
}
|
||||
_db.RegionAndRoomAndBedSchedule.AddRange(bedList);
|
||||
}
|
||||
_db.SaveChanges();
|
||||
}
|
||||
else {
|
||||
return BadRequest("請提供掛單明細資料");
|
||||
}
|
||||
|
||||
|
||||
return Ok();
|
||||
}
|
||||
@@ -383,6 +498,7 @@ public class guadanOrderController : ApiController
|
||||
Handi = detail.handi,
|
||||
IsDeleted = false,
|
||||
Name = detail.name,
|
||||
OrderUuid=guadanorder.Uuid
|
||||
};
|
||||
list.Add(guest);
|
||||
if (!Guid.TryParse((string)detail.bedUuid, out Guid targetGuid))
|
||||
|
||||
@@ -61,7 +61,9 @@ public class regionController : ApiController
|
||||
{
|
||||
query = query.Where(r => r.Room.Any(room => room.Uuid == filter.RoomId.Value));
|
||||
}
|
||||
|
||||
var allGuaDanLimits = _db.GuaDanLimits
|
||||
.Select(g => new { g.ParamNo, g.ParamName })
|
||||
.ToList();
|
||||
var data = query
|
||||
.ToList()
|
||||
.Select(r => new
|
||||
@@ -101,6 +103,15 @@ public class regionController : ApiController
|
||||
bed.StatusCode,
|
||||
bed.IsActive,
|
||||
bed.IsDeleted,
|
||||
Limits = allGuaDanLimits
|
||||
.Where(g => (bed.Limits ?? "")
|
||||
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
|
||||
.Contains(g.ParamNo))
|
||||
.Select(g => new
|
||||
{
|
||||
g.ParamNo,
|
||||
g.ParamName
|
||||
}).ToList(),
|
||||
canuse = bed.IsAvailableDuring(startDate, endDate, _db),
|
||||
statusname = bed.RegionRoomBedStatus.Name,
|
||||
schedules = _db.RegionAndRoomAndBedSchedule
|
||||
|
||||
Reference in new issue
Block a user