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; }
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; } }
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; }
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; }