예제 #1
0
        private static async Task<DateRange> _getTrackedOptionDates(OptionChoice optChoice, ResotelContext ctx)
        {
            DateRange trackedOptDates = await ctx.Set<DateRange>().FirstOrDefaultAsync(dr => dr.Id == optChoice.TakenDates.Id);
            if (trackedOptDates == null)
            {
                trackedOptDates = ctx.Set<DateRange>().Add(optChoice.TakenDates);
            }

            return trackedOptDates;
        }
예제 #2
0
        private static async Task _updateRoomPacks(Booking trackedBooking, IList<AppliedPack> trackedRoomPacks, IList<AppliedPack> newRoomPacks, ResotelContext ctx)
        {
            trackedRoomPacks.Clear();
            foreach (AppliedPack appliedPack in newRoomPacks)
            {
                AppliedPack trackedAppliedPack = await ctx.Set<AppliedPack>().FirstOrDefaultAsync(ap => ap.Id == appliedPack.Id);
                if (trackedAppliedPack == null)
                {
                    trackedAppliedPack = ctx.Set<AppliedPack>().Add(appliedPack);
                }

                Room trackedRoom = await ctx.Rooms.FirstOrDefaultAsync(r => r.Id == appliedPack.Room.Id);
                Pack trackedPack = await ctx.Set<Pack>().FirstOrDefaultAsync(p => p.Id == appliedPack.RoomPack.Id);

                trackedAppliedPack.Room = trackedRoom;
                trackedAppliedPack.RoomPack = trackedPack;
                trackedAppliedPack.Booking = trackedBooking;
            }
        }
예제 #3
0
        private static async Task<OptionChoice> _getTrackedOptionChoice(OptionChoice optChoice, ResotelContext ctx)
        {
            OptionChoice trackedOptChoice = await ctx.Set<OptionChoice>()
                .Include(optC => optC.Option)
                .Include(optC => optC.Option.Discounts)
                .Include(optC => optC.Option.Rooms)
                .Include(optC => optC.TakenDates)
                .FirstOrDefaultAsync(optC => optC.Id == optChoice.Id);
            
            if (trackedOptChoice == null)
            {
                trackedOptChoice = ctx.Set<OptionChoice>().Add(optChoice);
            }

            return trackedOptChoice;
        }
예제 #4
0
 private static async Task<DateRange> _getTrackedBookingDates(DateRange newBookingDates, ResotelContext ctx)
 {
     DateRange trackedBookingDates = await ctx.Set<DateRange>().FirstOrDefaultAsync(dr => dr.Id == newBookingDates.Id);
     if (trackedBookingDates == null)
     {
         trackedBookingDates = ctx.Set<DateRange>().Attach(newBookingDates);
     } else
     {
         // check
         ctx.Entry(trackedBookingDates).CurrentValues.SetValues(newBookingDates);
     }
     return trackedBookingDates;
 }