public JsonResult GetConsultoriosHorarios(string anio, string mes, string dia)
        {
            DateTime fecha = Convert.ToDateTime(anio + "/" + mes + "/" + dia);
            var      model = Mapper.Map <List <ConsultorioHorariosModel> >(consultorioService.GetAll());

            var agenda = agendaService.GetAgenda();

            if (agendaService.AtiendeEl(fecha, agenda))
            {
                var           sesiones   = agendaService.SearchSesions(fecha, fecha.AddDays(1));
                List <string> horarios   = new List <string>();
                DateTime      horaInicio = agenda.HoraDesde;
                DateTime      horaFin    = agenda.HoraHasta;

                if (agendaService.SearchFeriado(fecha, fecha).Count > 0 || agendaService.SearchRecesos(fecha, fecha).Count > 0)
                {
                    horaInicio = agenda.HoraHasta;
                    horaFin    = agenda.HoraDesde;
                }
                while (horaInicio <= horaFin)
                {
                    horarios.Add(horaInicio.ToString("HH:mm"));
                    horaInicio = horaInicio.AddMinutes(agenda.Frecuencia);
                }

                //var bloqueos = agendaService.SearchBloqueos(fecha, fecha);
                //bloqueos.ToList().ForEach(bloqueo =>
                //{
                //    while(bloqueo.HoraDesde.Value.TimeOfDay <= bloqueo.HoraHasta.Value.TimeOfDay)
                //    {
                //        sesiones.Add(new Sesion
                //        {
                //            FechaHora = bloqueo.HoraDesde.Value,
                //            ConsultorioID = bloqueo.ConsultorioId,
                //            TurnoSimultaneo = bloqueo.TurnoSimultaneo
                //        });
                //        bloqueo.HoraDesde = bloqueo.HoraDesde.Value.AddMinutes(agenda.Frecuencia);
                //    }
                //});

                model.ForEach(consultorio =>
                {
                    for (int ts = 1; ts <= consultorio.TurnosSimultaneos; ts++)
                    {
                        var horariosTomados = sesiones
                                              .Where(x => x.ConsultorioID == consultorio.ID && (x.TurnoSimultaneo == ts || x.TurnoSimultaneo == 0))
                                              .Select(y => y.FechaHora.ToString("HH:mm"))
                                              .ToList();

                        horarios
                        .Where(x => !horariosTomados.Contains(x) && !consultorio.Horario.Contains(x))
                        .ToList()
                        .ForEach(hr =>
                        {
                            consultorio.Horario.Add(hr);
                        });
                    }
                    consultorio.Horario = consultorio.Horario.OrderBy(x => x).ToList();
                });
            }
            return(Json(model, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public IHttpActionResult GetConsultorios()
        {
            var consultorios = Mapper.Map <List <ConsultorioModel> >(consultorioService.GetAll());

            return(Ok(consultorios));
        }