Example #1
0
 public void UpdateSchedule(ScheduleWithDateTransfer scheduleWithDateTransfer)
 {
     if (!IsCorrectScheduleTimesOfWorkDay(scheduleWithDateTransfer))
     {
         throw new WarningException(ExceptionMessages.TimeOfWorkDayIsNonCorrect);
     }
     if (!IsCorrectScheduleTimes(scheduleWithDateTransfer))
     {
         throw new WarningException(ExceptionMessages.WorkDayIsNotCorrect);
     }
     lock (_locker.GetOrAdd(scheduleWithDateTransfer.DoctorId))
     {
         if (HasConflictSession(scheduleWithDateTransfer))
         {
             throw new WarningException(ExceptionMessages.DateOfChangeWorkDayNotOptimal);
         }
         SetWorkDaysId(scheduleWithDateTransfer);
         _scheduleRepository.AddOrUpdateSchedule(new Schedule
         {
             ActualisationDate = scheduleWithDateTransfer.ActualisationDate,
             DoctorId          = scheduleWithDateTransfer.DoctorId,
             MondayId          = scheduleWithDateTransfer.Monday?.Id ?? 0,
             TuesdayId         = scheduleWithDateTransfer.Tuesday?.Id ?? 0,
             WednesdayId       = scheduleWithDateTransfer.Wednesday?.Id ?? 0,
             ThursdayId        = scheduleWithDateTransfer.Thursday?.Id ?? 0,
             FridayId          = scheduleWithDateTransfer.Friday?.Id ?? 0,
             SaturdayId        = scheduleWithDateTransfer.Saturday?.Id ?? 0,
             SundayId          = scheduleWithDateTransfer.Sunday?.Id ?? 0,
             IsApproved        = true
         });
     }
 }
Example #2
0
        private bool HasConflictSession(ScheduleWithDateTransfer scheduleWithDateTransfer)
        {
            var nextSchedule = _scheduleRepository.GetSchedulesByDoctorId(scheduleWithDateTransfer.DoctorId)
                               .OrderByDescending(s => s.ActualisationDate)
                               .FirstOrDefault(s => s.ActualisationDate > scheduleWithDateTransfer.ActualisationDate);

            var sessionsInNewSchedule = _sessionRepository.GetSessionsByDoctorId(scheduleWithDateTransfer.DoctorId)
                                        .Where(s => s.Date >= scheduleWithDateTransfer.ActualisationDate);

            if (nextSchedule != null)
            {
                sessionsInNewSchedule = sessionsInNewSchedule.Where(s => s.Date < nextSchedule.ActualisationDate);
            }

            if (sessionsInNewSchedule.Equals(default))
Example #3
0
        private void SetWorkDaysId(ScheduleWithDateTransfer transfer)
        {
            if (transfer.Monday != null)
            {
                transfer.Monday.Id = _workDayRepository.GetOrAddNewWorkDay(transfer.Monday.BeginOfDay, transfer.Monday.EndOfDay);
            }

            if (transfer.Tuesday != null)
            {
                transfer.Tuesday.Id =
                    _workDayRepository.GetOrAddNewWorkDay(transfer.Tuesday.BeginOfDay, transfer.Tuesday.EndOfDay);
            }

            if (transfer.Wednesday != null)
            {
                transfer.Wednesday.Id =
                    _workDayRepository.GetOrAddNewWorkDay(transfer.Wednesday.BeginOfDay, transfer.Wednesday.EndOfDay);
            }

            if (transfer.Thursday != null)
            {
                transfer.Thursday.Id = _workDayRepository.GetOrAddNewWorkDay(transfer.Thursday.BeginOfDay, transfer.Thursday.EndOfDay);
            }

            if (transfer.Friday != null)
            {
                transfer.Friday.Id = _workDayRepository.GetOrAddNewWorkDay(transfer.Friday.BeginOfDay, transfer.Friday.EndOfDay);
            }

            if (transfer.Saturday != null)
            {
                transfer.Saturday.Id =
                    _workDayRepository.GetOrAddNewWorkDay(transfer.Saturday.BeginOfDay, transfer.Saturday.EndOfDay);
            }

            if (transfer.Sunday != null)
            {
                transfer.Sunday.Id =
                    _workDayRepository.GetOrAddNewWorkDay(transfer.Sunday.BeginOfDay, transfer.Sunday.EndOfDay);
            }
        }
Example #4
0
 public void UpdateSchedule(ScheduleWithDateTransfer scheduleWithDateTransfer)
 {
     SetWorkDaysId(scheduleWithDateTransfer);
     lock (_locker.GetOrAdd(scheduleWithDateTransfer.DoctorId))
     {
         _scheduleRepository.AddOrUpdateSchedule(new Schedule
         {
             ActualisationDate = scheduleWithDateTransfer.ActualisationDate,
             DoctorId          = scheduleWithDateTransfer.DoctorId,
             MondayId          = scheduleWithDateTransfer.Monday?.Id ?? 0,
             TuesdayId         = scheduleWithDateTransfer.Tuesday?.Id ?? 0,
             WednesdayId       = scheduleWithDateTransfer.Wednesday?.Id ?? 0,
             ThursdayId        = scheduleWithDateTransfer.Thursday?.Id ?? 0,
             FridayId          = scheduleWithDateTransfer.Friday?.Id ?? 0,
             SaturdayId        = scheduleWithDateTransfer.Saturday?.Id ?? 0,
             SundayId          = scheduleWithDateTransfer.Sunday?.Id ?? 0,
             IsApproved        = scheduleWithDateTransfer.IsApproved
         });
         UpdateDoctorStatus(scheduleWithDateTransfer.DoctorId);
     }
 }