Beispiel #1
0
        public List <DateTime> GetHorarios(int idMedico, int idEspecialidad, int idSala, DateTime?fecha)
        {
            try
            {
                List <DateTime> list           = new List <DateTime>();
                var             especialidades = _especialidadRepository.ObtenerDuracionEspecialidad(idMedico, idEspecialidad);
                TimeSpan        minima         = _especialidadRepository.ObtenerMinimaDuracion(idMedico);
                double          turnosNec      = Math.Ceiling(especialidades.TotalMilliseconds / minima.TotalMilliseconds);
                var             dia            = fecha.Value.DayOfWeek;
                var             horariosMedico = _horariosRepository.Find(o => o.Dia == dia && o.MedicoId == idMedico);
                List <Turno>    turnos         = _TurnoRepository.List(t => t.MedicoId == idMedico && t.FechaInicio > fecha && t.Estado == EstadoTurno.Pendientes && t.SalaId == idSala).ToList();
                List <DateTime> turnosPosibles = this.GetTurnosPosibles(horariosMedico.HoraDesde, horariosMedico.HoraHasta, especialidades.Minutes, fecha.Value);

                foreach (var app in turnos)
                {
                    turnosPosibles.RemoveAll(x => x >= app.FechaInicio && x < app.FechaFin);
                }

                turnosPosibles = FilterTimetable(minima, turnosNec, turnosPosibles);

                return(turnosPosibles);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public TimeSpan ObtenerDuracionEspecialidad(int idMedico, int idEsp)
 {
     return(_EspecialidadRepository.ObtenerDuracionEspecialidad(idMedico, idEsp));
 }