Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Room : Entity
- {
- public Room()
- {
- RoomRates = new HashSet<RoomRate>();
- }
- public string Name { get; set; }
- public ICollection<RoomRate> RoomRates { get; }
- public int HotelId { get; set; }
- public void AddRoomRate(DateRange period, Money price)
- {
- RecalculateRates(period);
- RoomRates.Add(new RoomRate{Period = period, Price = price, RoomId = Id});
- }
- public class RoomRate : Entity
- {
- public DateRange Period { get; set; }
- public Money Price { get; set; }
- public int RoomId { get; set; }
- public void SetStart(DateTime start) {
- Period = new DateRange(start, Period.End);
- }
- public void SetEnd(DateTime end)
- {
- Period = new DateRange(Period.Start, end);
- }
- }
- foreach (var rateToReArrange in ratesToReArrange)
- {
- var periodToReArrange = rateToReArrange.Period;
- if (periodToReArrange.Contains(ratePeriod))
- {
- RoomRates.Add(new RoomRate
- {
- Period = new DateRange(periodToReArrange.Start, dayBeforePeriodStarts),
- Price = rateToReArrange.Price, RoomId = rateToReArrange.RoomId
- });
- rateToReArrange.SetStart(dayAfterPeriodEnds);
- return;
- }
- if (rateToReArrange.Period.StartsInRange(ratePeriod))
- {
- rateToReArrange.SetStart(dayAfterPeriodEnds);
- return;
- }
- if (rateToReArrange.Period.EndsInRange(ratePeriod))
- {
- rateToReArrange.SetEnd(dayBeforePeriodStarts);
- return;
- }
- }
- room.AddRoomRate(new DateRange(request.Start,request.End), new Money(request.Amount, request.Currency.ToString()));
- _context.Rooms.Update(room);
- await _context.SaveChangesAsync(cancellationToken);
Add Comment
Please, Sign In to add comment