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]); }); }
protected override void InsertCalendarEvent(CalendarEvent calendarEvent, OnSuccessfulUpsertCallback onUpsert) { var eventId = calendarEvent.EventId; var newEvent = new VacationIsRequested() { EmployeeId = this.EmployeeId, EventId = eventId, StartDate = calendarEvent.Dates.StartDate, EndDate = calendarEvent.Dates.EndDate, TimeStamp = DateTimeOffset.Now }; this.Persist(newEvent, e => { this.OnVacationRequested(e); onUpsert(this.EventsById[eventId]); }); }
protected abstract void UpdateCalendarEvent(CalendarEvent oldEvent, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert);
protected abstract void InsertCalendarEvent(CalendarEvent calendarEvent, OnSuccessfulUpsertCallback onUpsert);
protected override void UpdateCalendarEvent(CalendarEvent oldEvent, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert) { if (oldEvent.Dates != newEvent.Dates) { throw new Exception("Dates change is not supported for work hours"); } if (oldEvent.Status != newEvent.Status) { switch (newEvent.Status) { case WorkHoursChangeStatuses.Approved: this.Persist(new WorkHoursChangeIsApproved() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnChangeApproved); break; case WorkHoursChangeStatuses.Cancelled: this.Persist(new WorkHoursChangeIsCancelled() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnChangeCancelled); break; case WorkHoursChangeStatuses.Rejected: this.Persist(new WorkHoursChangeIsRejected() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnChangeRejected); break; } } onUpsert(newEvent); }
protected abstract void UpdateCalendarEvent(CalendarEvent oldEvent, string updatedBy, DateTimeOffset timestamp, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert);
protected abstract void InsertCalendarEvent(CalendarEvent calendarEvent, string updatedBy, DateTimeOffset timestamp, OnSuccessfulUpsertCallback onUpsert);
protected override void UpdateCalendarEvent(CalendarEvent oldEvent, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert) { if (oldEvent.Dates != newEvent.Dates) { var eventToPersist = new VacationDatesAreEdited() { EventId = newEvent.EventId, StartDate = newEvent.Dates.StartDate, EndDate = newEvent.Dates.EndDate, TimeStamp = DateTimeOffset.Now }; this.Persist(eventToPersist, this.OnVacationDatesEdit); } if (oldEvent.Status != newEvent.Status) { switch (newEvent.Status) { case VacationStatuses.Approved: this.Persist(new VacationIsApproved() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnVacationApproved); break; case VacationStatuses.Cancelled: this.Persist(new VacationIsCancelled() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnVacationCancel); break; case VacationStatuses.Rejected: this.Persist(new VacationIsRejected() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now, }, this.OnVacationRejected); break; } } onUpsert(newEvent); }
protected override void UpdateCalendarEvent(CalendarEvent oldEvent, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert) { if (oldEvent.Dates.StartDate != newEvent.Dates.StartDate) { throw new Exception("Start date cannot be changed"); } if (oldEvent.Dates.EndDate != newEvent.Dates.EndDate) { this.Persist(new SickLeaveIsProlonged() { EndDate = newEvent.Dates.EndDate, EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnSickLeaveProlonged); } if (oldEvent.Status != newEvent.Status) { switch (newEvent.Status) { case SickLeaveStatuses.Cancelled: this.Persist(new SickLeaveIsCancelled() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnSickLeaveCancelled); break; case SickLeaveStatuses.Completed: this.Persist(new SickLeaveIsCompleted() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnSickLeaveCompleted); break; case SickLeaveStatuses.Approved: this.Persist(new SickLeaveIsApproved() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, e => { this.OnSickleaveApproved(e); this.SendSickLeaveApprovedMessage(e); }); break; case SickLeaveStatuses.Rejected: this.Persist(new SickLeaveIsRejected() { EventId = newEvent.EventId, TimeStamp = DateTimeOffset.Now }, this.OnSickLeaveRejected); break; } } onUpsert(newEvent); }