Beispiel #1
0
        public void AddBooking(UserId userId, int day, Slot slot)
        {
            if (UserCanBook(this, userId) && IsBookableDay(Year, Month, day))
            {
                if (BookingDays.ContainsKey(day))
                {
                    var bookingDay = BookingDays[day];

                    if (SlotIsOpen(bookingDay, slot))
                    {
                        bookingDay.AddBooking(slot, userId);
                    }
                    else
                    {
                        throw new SlotIsClosedException();
                    }
                }
                else
                {
                    var bookingDayId = BookingDayId.From(new DateTime(Year, Month, day));
                    var bookingDay   = new BookingDay(bookingDayId, new Dictionary <Slot, UserId>());

                    bookingDay.AddBooking(slot, userId);
                    BookingDays.Add(day, bookingDay);
                }
            }
            else
            {
                throw new UserHasOverbookedException();
            }
        }
Beispiel #2
0
        private static BookingDay From(BookingDayDataModel dataModel)
        {
            if (dataModel == null)
            {
                return(null);
            }

            var entityId = BookingDayId.With(dataModel.Id);

            var entity = new BookingDay(entityId, From(dataModel.Bookings));

            return(entity);
        }