Example #1
0
        public void RegistrarCitaPaciente(FormularioCitaPaciente entity, int PacienteId)
        {
            var cita           = new Cita();
            var conversor      = new ConversorDeFechaYHora();
            var disponibilidad = new Disponibilidad();
            var correo         = new SendEmail();

            try {
                var tipoAtencion = tipoAtencionRepository.FindByDescription(entity.TipoAtencion);
                var paciente     = PacienteRepository.buscarPorUsuarioId(PacienteId);
                PacienteRepository.ActualizarNumeroPaciente(entity.Celular, paciente);
                cita.Fecha = conversor.TransformarAFecha(entity.Fecha);
                cita.HoraInicioAtencion = conversor.TransformarAHora(entity.HoraInicioAtencion, entity.Fecha);
                cita.HoraFinAtencion    = conversor.TransformarAHora(entity.HoraFinAtencion, entity.Fecha);
                cita.Estado             = "En Proceso";
                cita.PacienteId         = paciente.Id;
                cita.Paciente           = paciente;
                cita.TipoAtencionId     = tipoAtencion.Id;
                cita.TipoAtencion       = tipoAtencion;
                Save(cita);

                var horarioDescartado = new HorarioDescartado();
                horarioDescartado.HoraInicio = cita.HoraInicioAtencion;
                horarioDescartado.HoraFin    = cita.HoraFinAtencion;

                disponibilidad = disponibilidadRepository.listarPorFecha(entity.Fecha);

                if (disponibilidad != null)
                {
                    horarioDescartado.DisponibilidadId = disponibilidad.Id;
                    horarioDescartado.Disponibilidad   = disponibilidad;
                }
                else
                {
                    disponibilidad                = new Disponibilidad();
                    disponibilidad.Dia            = cita.Fecha;
                    disponibilidad.HoraInicio     = conversor.TransformarAHora("07:00", entity.Fecha);
                    disponibilidad.HoraFin        = conversor.TransformarAHora("18:00", entity.Fecha);
                    disponibilidad.EspecialistaId = 1;
                    disponibilidad.Especialista   = this.especialistaRepository.FindById(disponibilidad.EspecialistaId);
                    var disInserted = this.disponibilidadRepository.guardarDisponibilidad(disponibilidad);

                    horarioDescartado.DisponibilidadId = disInserted.Id;
                    horarioDescartado.Disponibilidad   = disInserted;
                }

                this.horarioDescartadoRepository.Save(horarioDescartado);

                var notificacion = new Notificacion();
                notificacion.EmisorId         = paciente.UsuarioId;
                notificacion.ReceptorId       = 1;
                notificacion.TipoNotificacion = "NUEVACITA";

                notificacionRepository.Save(notificacion);

                var especialista = especialistaRepository.FindById(1);

                //Email Especialista
                string emailUserTo        = especialista.Usuario.Email;
                string nombreEspecialista = especialista.Usuario.Nombre + " " + especialista.Usuario.Apellido;
                string nombrePaciente     = cita.Paciente.Usuario.Nombre + " " + cita.Paciente.Usuario.Apellido;
                string horaCitaEmail      = cita.HoraInicioAtencion.ToString();
                string textBody           = "El paciente " + nombrePaciente + " registró una cita para la siguiente fecha: " + horaCitaEmail;
                string subject            = "Nueva Cita";

                correo.sendEmailTo(nombreEspecialista, emailUserTo, subject, textBody);

                //Email Paciente
                string emailUserTo2 = cita.Paciente.Usuario.Email;
                string textBody2    = "Acabas de registrar una cita con el especialista " + nombreEspecialista + " para la siguiente fecha: " + horaCitaEmail;
                correo.sendEmailTo(nombrePaciente, emailUserTo2, subject, textBody2);
            }catch (System.Exception) {
                throw;
            }
        }