public static Booking Create(BookingPeriod bookingPeriod, IRoom room) { if (!room.IsAvailable(bookingPeriod)) { throw new RoomNotAvailableException(); } var booking = new Booking(bookingPeriod, room); return(booking); }
public bool OverlappedBy(BookingPeriod otherPeriod) { if (Start >= otherPeriod.End) { return(false); } if (otherPeriod.Start >= End) { return(false); } return(true); }
internal Booking(BookingPeriod bookingPeriod, IRoom room) { Room = room; BookingPeriod = bookingPeriod; }
public bool IsAvailable(BookingPeriod requestedBookingPeriod) { return(!Bookings.Any(b => b.BookingPeriod.OverlappedBy(requestedBookingPeriod))); }