protected override void InsertCalendarEvent(CalendarEvent calendarEvent, OnSuccessfulUpsertCallback onUpsert) { if (calendarEvent.Dates.StartDate != calendarEvent.Dates.EndDate) { throw new Exception("StartDate must be equal to EndDate for work hours change"); } if (calendarEvent.Dates.StartWorkingHour >= calendarEvent.Dates.FinishWorkingHour) { throw new Exception("Finish working hour must be greater than start working hour"); } var eventId = calendarEvent.EventId; var newEvent = new WorkHoursChangeIsRequested() { EmployeeId = this.EmployeeId, EventId = eventId, Date = calendarEvent.Dates.StartDate, StartHour = calendarEvent.Dates.StartWorkingHour, EndHour = calendarEvent.Dates.FinishWorkingHour, IsDayoff = calendarEvent.Type == CalendarEventTypes.Dayoff, TimeStamp = DateTimeOffset.Now }; this.Persist(newEvent, e => { this.OnChangeRequested(e); onUpsert(this.EventsById[eventId]); }); }
private void OnChangeRequested(WorkHoursChangeIsRequested message) { var eventType = message.IsDayoff ? CalendarEventTypes.Dayoff : CalendarEventTypes.Workout; var datesPeriod = new DatesPeriod(message.Date, message.Date, message.StartHour, message.EndHour); var calendarEvent = new CalendarEvent(message.EventId, eventType, datesPeriod, WorkHoursChangeStatuses.Requested, this.EmployeeId); this.EventsById[message.EventId] = calendarEvent; }