Guest User

Untitled

a guest
Dec 10th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. public class Room : Entity
  2. {
  3. public Room()
  4. {
  5. RoomRates = new HashSet<RoomRate>();
  6. }
  7.  
  8.  
  9. public string Name { get; set; }
  10.  
  11. public ICollection<RoomRate> RoomRates { get; }
  12.  
  13. public int HotelId { get; set; }
  14.  
  15. public void AddRoomRate(DateRange period, Money price)
  16. {
  17.  
  18. RecalculateRates(period);
  19.  
  20. RoomRates.Add(new RoomRate{Period = period, Price = price, RoomId = Id});
  21.  
  22. }
  23.  
  24. public class RoomRate : Entity
  25. {
  26.  
  27. public DateRange Period { get; set; }
  28.  
  29. public Money Price { get; set; }
  30.  
  31. public int RoomId { get; set; }
  32.  
  33. public void SetStart(DateTime start) {
  34. Period = new DateRange(start, Period.End);
  35.  
  36. }
  37.  
  38. public void SetEnd(DateTime end)
  39. {
  40. Period = new DateRange(Period.Start, end);
  41.  
  42. }
  43.  
  44.  
  45. }
  46.  
  47. foreach (var rateToReArrange in ratesToReArrange)
  48. {
  49. var periodToReArrange = rateToReArrange.Period;
  50.  
  51. if (periodToReArrange.Contains(ratePeriod))
  52. {
  53. RoomRates.Add(new RoomRate
  54. {
  55. Period = new DateRange(periodToReArrange.Start, dayBeforePeriodStarts),
  56. Price = rateToReArrange.Price, RoomId = rateToReArrange.RoomId
  57. });
  58.  
  59.  
  60.  
  61. rateToReArrange.SetStart(dayAfterPeriodEnds);
  62.  
  63. return;
  64.  
  65.  
  66. }
  67.  
  68. if (rateToReArrange.Period.StartsInRange(ratePeriod))
  69. {
  70. rateToReArrange.SetStart(dayAfterPeriodEnds);
  71.  
  72. return;
  73. }
  74.  
  75. if (rateToReArrange.Period.EndsInRange(ratePeriod))
  76. {
  77. rateToReArrange.SetEnd(dayBeforePeriodStarts);
  78.  
  79. return;
  80. }
  81. }
  82.  
  83. room.AddRoomRate(new DateRange(request.Start,request.End), new Money(request.Amount, request.Currency.ToString()));
  84.  
  85. _context.Rooms.Update(room);
  86.  
  87. await _context.SaveChangesAsync(cancellationToken);
Add Comment
Please, Sign In to add comment