示例#1
0
        public PostponeMedicalAppointmentResponse Ejecute(PostponeMedicalAppointmentRequest request)
        {
            var medicalAppointment =
                _unitOfWork.MedicalAppointmentRepository.FindFirstOrDefault(m => m.Id == request.Identification);

            var turn = CalculateTurn(request, medicalAppointment);

            if (!ValidateDate(medicalAppointment.Date, request.Date))
            {
                return new PostponeMedicalAppointmentResponse {
                           Mensaje = "Por favor ingrese una fecha posterior a la actual"
                }
            }
            ;

            if (medicalAppointment != null)
            {
                medicalAppointment.PostponeMedicalAppointment(request.Date, turn);

                _unitOfWork.Commit();
                return(new PostponeMedicalAppointmentResponse {
                    Mensaje = "Cita medica aplazada satisfactoriamente"
                });
            }

            return(new PostponeMedicalAppointmentResponse {
                Mensaje = "Error al aplazar la cita medica"
            });
        }
示例#2
0
        private int CalculateTurn(PostponeMedicalAppointmentRequest request, MedicalAppointment medicalAppointment)
        {
            var turn = 0;
            var medicalAppointments =
                _unitOfWork.MedicalAppointmentRepository.FindBy(m => m.Date == request.Date && m.Doctor == medicalAppointment.Doctor && m.State == "Programada");

            foreach (var appointment in medicalAppointments)
            {
                if (appointment.State == "Programada" || appointment.State == "Aplazada")
                {
                    turn++;
                }
            }

            return(turn);
        }