Esempio n. 1
0
 public void ChangeDescription(CalendarDescription newDescription)
 {
     Apply(new Events.CalendarDescriptionChanged {
         CalendarId             = this.Id,
         NewCalendarDescription = newDescription
     });
 }
Esempio n. 2
0
        protected override void When(object @event)
        {
            switch (@event)
            {
            case Events.CalendarCreated e:
                Id          = new CalendarId(e.CalendarId);
                Description = new CalendarDescription(e.CalendarDescription);
                MaximumBookingTimeInMinutes = new CalendarMaximumBookingTimeInMinutes(e.MaximumBookingTimeInMinutes);
                break;

            case Events.CalendarDescriptionChanged e:
                Description = new CalendarDescription(e.NewCalendarDescription);
                break;

            case Events.CalendarMaxBookingTimeChanged e:
                MaximumBookingTimeInMinutes = new CalendarMaximumBookingTimeInMinutes(e.NewMaximumBookingTimeInMinutes);
                break;

            case Events.BookingAdded e:
                var newBooking = new Booking(Apply);
                ApplyToEntity(newBooking, e);
                EnsureNoBookingConflicts(newBooking);
                Bookings.Add(newBooking);
                break;

            case Events.BookingRemoved e:
                var booking = Bookings.Where(booking => booking.Id == e.BookingId).FirstOrDefault();
                if (booking == null)
                {
                    throw new Exception("Booking doesnot exist");
                }
                Bookings.Remove(booking);
                break;
            }
        }
Esempio n. 3
0
 public Calendar(CalendarId id, CalendarDescription description, CalendarMaximumBookingTimeInMinutes maxBookingTimeInMinutes)
 {
     Bookings = new List <Booking>();
     Apply(new Events.CalendarCreated
     {
         CalendarId                  = id,
         CalendarDescription         = description,
         MaximumBookingTimeInMinutes = maxBookingTimeInMinutes
     });
 }