示例#1
0
        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);
        }
示例#3
0
 internal Booking(BookingPeriod bookingPeriod, IRoom room)
 {
     Room          = room;
     BookingPeriod = bookingPeriod;
 }
示例#4
0
 public bool IsAvailable(BookingPeriod requestedBookingPeriod)
 {
     return(!Bookings.Any(b => b.BookingPeriod.OverlappedBy(requestedBookingPeriod)));
 }