Example #1
0
        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]);
            });
        }
Example #2
0
        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]);
            });
        }
Example #3
0
 protected abstract void UpdateCalendarEvent(CalendarEvent oldEvent, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert);
Example #4
0
 protected abstract void InsertCalendarEvent(CalendarEvent calendarEvent, OnSuccessfulUpsertCallback onUpsert);
Example #5
0
        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);
        }
Example #6
0
 protected abstract void UpdateCalendarEvent(CalendarEvent oldEvent, string updatedBy, DateTimeOffset timestamp, CalendarEvent newEvent, OnSuccessfulUpsertCallback onUpsert);
Example #7
0
 protected abstract void InsertCalendarEvent(CalendarEvent calendarEvent, string updatedBy, DateTimeOffset timestamp, OnSuccessfulUpsertCallback onUpsert);
Example #8
0
        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);
        }
Example #9
0
        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);
        }