コード例 #1
0
        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,
            });
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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,
            });
        }
コード例 #4
0
ファイル: MasterService.cs プロジェクト: cheat13/PrompimanAPI
        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));
        }