/// <summary>
 /// Reschedule Appointment Command Handler
 /// </summary>
 /// <param name="appointmentRepository"></param>
 /// <param name="patientsRepository"></param>
 /// <param name="appointmentMustExistValidator"></param>
 /// <param name="appointmentEquipmentIsAvailableValidator"></param>
 /// <param name="mediator"></param>
 public RescheduleAppointmentCommandHandler(IAppointmentRepository appointmentWriteRepository, IBaseRepository <Appointment> appointmentRepository, IBaseRepository <Patient> patientsRepository, IAppointmentMustExistValidator appointmentMustExistValidator, IAppointmentEquipmentIsAvailableValidator appointmentEquipmentIsAvailableValidator, IMediator mediator)
 {
     _appointmentWriteRepository               = appointmentWriteRepository;
     _appointmentRepository                    = appointmentRepository;
     _patientsRepository                       = patientsRepository;
     _appointmentMustExistValidator            = appointmentMustExistValidator;
     _appointmentEquipmentIsAvailableValidator = appointmentEquipmentIsAvailableValidator;
     _mediator = mediator;
 }
 /// <summary>
 /// Cancel Appointment Command Handler
 /// </summary>
 /// <param name="appointmentRepository"></param>
 /// <param name="appointmentMustExistValidator"></param>
 /// <param name="mediator"></param>
 public CancelAppointmentCommandHandler(IAppointmentRepository appointmentWriteRepository, IBaseRepository <Appointment> appointmentRepository, IBaseRepository <Patient> patientsRepository, IAppointmentMustExistValidator appointmentMustExistValidator, IEquipmentService equipmentService, IMediator mediator)
 {
     _appointmentWriteRepository    = appointmentWriteRepository;
     _appointmentRepository         = appointmentRepository;
     _patientsRepository            = patientsRepository;
     _appointmentMustExistValidator = appointmentMustExistValidator;
     _equipmentService = equipmentService;
     _mediator         = mediator;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Appointment Cannot Be Cancelled 3Days Prior To Date Rule
 /// </summary>
 /// <param name="appointmentDate"></param>
 public AppointmentMustExistRule(IAppointmentMustExistValidator appointmentMustExistValidator, int appointmentId)
 {
     _appointmentMustExistValidator = appointmentMustExistValidator;
     _appointmentId = appointmentId;
 }
 /// <summary>
 /// Cancel Appointment
 /// </summary>
 /// <param name="appointmentMustExistRuleValidator"></param>
 /// <param name="appointmentId"></param>
 /// <param name="referenceCode"></param>
 public static void CancelAppointment(int appointmentId, DateTime date, IAppointmentMustExistValidator appointmentMustExistValidator)
 {
     // validate the appointment exists and is not 3 days prior to schduled date.
     ValidateBusinessRule(new AppointmentMustExistRule(appointmentMustExistValidator, appointmentId));
     ValidateBusinessRule(new AppointmentCannotBeCancelled3DaysPriorToDateRule(date));
 }
        /// <summary>
        /// Update Appointment
        /// </summary>
        /// <param name="appointmentId"></param>
        /// <param name="currentAppointmentDate"></param>
        /// <param name="newAppointmentDate"></param>
        /// <param name="newAppointmentStartTime"></param>
        /// <param name="newAppointmentEndTime"></param>
        /// <param name="appointmentMustExistValidator"></param>
        /// <param name="appointmentEquipmentIsAvailableValidator"></param>
        /// <returns></returns>
        public static void UpdateAppointment(int appointmentId, DateTime currentAppointmentDate, DateTime newAppointmentDate, TimeSpan newAppointmentStartTime, TimeSpan newAppointmentEndTime, IAppointmentMustExistValidator appointmentMustExistValidator, IAppointmentEquipmentIsAvailableValidator appointmentEquipmentIsAvailableValidator)
        {
            // The appointment must exist.
            ValidateBusinessRule(new AppointmentMustExistRule(appointmentMustExistValidator, appointmentId));

            // Appointment can only be changed up to 2 days before the appointment date
            ValidateBusinessRule(new AppointmentChangeIsLessThan2DaysPriorToDateRule(currentAppointmentDate, newAppointmentDate));

            // Appointments can only be made for 2 weeks later at most.
            ValidateBusinessRule(new AppointmentIsLessThanTwoWeeksInAdvanceRule(newAppointmentDate));

            // Equipment Availability rule
            ValidateBusinessRule(new AppointmentEquipmentIsAvailableRule(appointmentEquipmentIsAvailableValidator, newAppointmentDate, newAppointmentStartTime, newAppointmentEndTime));
        }