public async Task <MasterDetail> GetById(string masterId) { var master = await masterDac.Get(m => m._id == masterId); var roomActLst = await roomActivatedDac.Gets(r => r.GroupId == masterId); return(new MasterDetail { Master = master, RoomActLst = roomActLst, }); }
public async Task <IEnumerable <Room> > Get(DateRequest req) { var rooms = await roomDac.Gets(x => true); var roomActLst = await roomActivatedDac.Gets(x => true); var qryRoomActLst = roomActLst.Where(r => !((r.ArrivalDate - req.CheckOutDate).TotalHours >= 18 || (req.CheckInDate - r.Departure).TotalHours >= 18)); if (qryRoomActLst.Any()) { rooms.ToList().ForEach(room => { var roomAct = qryRoomActLst.FirstOrDefault(r => r.RoomNo == room._id); if (roomAct != null) { room.Status = roomAct.Status; } }); } return(rooms); }
public async Task <Response> Update(string id, int addReserve, [FromBody] Reservation res) { // Update Reservation res.Reserve += addReserve; res.LastUpdate = now; await reservationDac.Update(r => r._id == id, res); // Upsert RoomActivated var req = new CreateRoomActRequest { GroupId = id, RoomSltLst = res.Rooms, CheckInDate = res.CheckInDate, CheckOutDate = res.CheckOutDate, }; await roomActService.Upsert(req, now); // Delete RoomActivated var roomNoLst = res.Rooms.Select(r => r.RoomNo).ToList(); var filter = Builders <RoomActivated> .Filter.Where(x => x.GroupId == id && x.Active == true && !roomNoLst.Contains(x.RoomNo)); var roomNotActLst = await roomActivatedDac.Gets(filter); if (roomNotActLst.Any()) { var roomActIdLst = roomNotActLst.Select(it => it._id).ToList(); var filterDel = Builders <RoomActivated> .Filter.Where(r => roomActIdLst.Contains(r._id)); await roomActService.Delete(filterDel, now); } ; return(new Response { IsSuccess = true, }); }
private async Task <int> GetBedNight(string masterId) { var rooms = await roomActivatedDac.Gets(r => r.GroupId == masterId); return(rooms.Sum(r => (r.Departure - r.ArrivalDate).Days)); }