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 ObtenerMinimaDuracion(int idMedico) { return(_EspecialidadRepository.ObtenerMinimaDuracion(idMedico)); }