public CalendarEntry( Tenant tenant, CalendarId calendarId, CalendarEntryId calendarEntryId, string description, string location, Owner owner, DateRange timeSpan, Repetition repetition, Alarm alarm, IEnumerable<Participant> invitees = null) { AssertionConcern.AssertArgumentNotNull(tenant, "The tenant must be provided."); AssertionConcern.AssertArgumentNotNull(calendarId, "The calendar id must be provided."); AssertionConcern.AssertArgumentNotNull(calendarEntryId, "The calendar entry id must be provided."); AssertionConcern.AssertArgumentNotEmpty(description, "The description must be provided."); AssertionConcern.AssertArgumentNotEmpty(location, "The location must be provided."); AssertionConcern.AssertArgumentNotNull(owner, "The owner must be provided."); AssertionConcern.AssertArgumentNotNull(timeSpan, "The time span must be provided."); AssertionConcern.AssertArgumentNotNull(repetition, "The repetition must be provided."); AssertionConcern.AssertArgumentNotNull(alarm, "The alarm must be provided."); if (repetition.Repeats == RepeatType.DoesNotRepeat) repetition = Repetition.DoesNotRepeat(timeSpan.Ends); AssertTimeSpans(repetition, timeSpan); Apply(new CalendarEntryScheduled(tenant, calendarId, calendarEntryId, description, location, owner, timeSpan, repetition, alarm, invitees)); }
void AssertTimeSpans(Repetition repetition, DateRange timeSpan) { if (repetition.Repeats == RepeatType.DoesNotRepeat) { AssertionConcern.AssertArgumentEquals(repetition.Ends, timeSpan.Ends, "Non-repeating entry must end with time span end."); } else { AssertionConcern.AssertArgumentFalse(timeSpan.Ends > repetition.Ends, "Time span must end when or before repetition ends."); } }
void When(CalendarEntryScheduled e) { this.tenant = e.Tenant; this.calendarId = e.CalendarId; this.calendarEntryId = e.CalendarEntryId; this.description = e.Description; this.location = e.Location; this.owner = e.Owner; this.timeSpan = e.TimeSpan; this.repetition = e.Repetition; this.alarm = e.Alarm; this.invitees = new HashSet<Participant>(e.Invitees ?? Enumerable.Empty<Participant>()); }
public CalendarEntryRescheduled( Tenant tenant, CalendarId calendarId, CalendarEntryId calendarEntryId, DateRange timeSpan, Repetition repetition, Alarm alarm) { this.Tenant = tenant; this.CalendarId = calendarId; this.CalendarEntryId = calendarEntryId; this.TimeSpan = timeSpan; this.Repetition = repetition; this.Alarm = alarm; }
public CalendarEntry ScheduleCalendarEntry( CalendarIdentityService calendarIdService, string description, string location, Owner owner, DateRange timeSpan, Repetition repetition, Alarm alarm, IEnumerable<Participant> invitees = null) { return new CalendarEntry( this.tenant, this.calendarId, calendarIdService.GetNextCalendarEntryId(), description, location, owner, timeSpan, repetition, alarm, invitees); }
public CalendarEntryScheduled( Tenant tenant, CalendarId calendarId, CalendarEntryId calendarEntryId, string description, string location, Owner owner, DateRange timeSpan, Repetition repetition, Alarm alarm, IEnumerable<Participant> invitees) { this.Tenant = tenant; this.CalendarId = calendarId; this.CalendarEntryId = calendarEntryId; this.Description = description; this.Location = location; this.Owner = owner; this.TimeSpan = timeSpan; this.Repetition = repetition; this.Alarm = alarm; this.Invitees = invitees; }
void When(CalendarEntryRescheduled e) { this.timeSpan = e.TimeSpan; this.repetition = e.Repetition; this.alarm = e.Alarm; }
public void Reschedule(string description, string location, DateRange timeSpan, Repetition repetition, Alarm alarm) { AssertionConcern.AssertArgumentNotNull(timeSpan, "The time span must be provided."); AssertionConcern.AssertArgumentNotNull(repetition, "The repetition must be provided."); AssertionConcern.AssertArgumentNotNull(alarm, "The alarm must be provided."); if (repetition.Repeats == RepeatType.DoesNotRepeat) repetition = Repetition.DoesNotRepeat(timeSpan.Ends); AssertTimeSpans(repetition, timeSpan); ChangeDescription(description); Relocate(location); Apply(new CalendarEntryRescheduled(this.tenant, this.calendarId, this.calendarEntryId, timeSpan, repetition, alarm)); }