Beispiel #1
0
        public List <ResponseTurnoDto> GetTurnosDisponiblesByDay(DateTime fecha, int IdEspecialidad)
        {
            int dayId = GetDayId(fecha);

            List <Turno>     turnosOcupados = _query.GetTurnosDelDia(fecha, IdEspecialidad);
            CalendarioTurnos diaDeAtencion  = _calendarioTurnosQuery.GetCalendarioTurnoDeEspecialista(dayId, IdEspecialidad);

            if (diaDeAtencion == null)
            {
                return(null);
            }

            List <ResponseTurnoDto> turnosDisponibles = new List <ResponseTurnoDto>();

            for (DateTime date = diaDeAtencion.HoraInicio; diaDeAtencion.HoraFin.CompareTo(date.AddMinutes(30)) >= 0; date = date.AddMinutes(30))
            {
                if (!IsTurnoOcupado(turnosOcupados, date))
                {
                    turnosDisponibles.Add(new ResponseTurnoDto()
                    {
                        IdEspecialidad = diaDeAtencion.IdEspecialidad,
                        IdEspecialista = diaDeAtencion.IdEspecialista,
                        Fecha          = fecha,
                        HoraInicio     = date,
                        HoraFin        = date.AddMinutes(30),
                    });
                }
                else
                {
                    turnosDisponibles.Add(null);
                }
            }

            return(turnosDisponibles);
        }
Beispiel #2
0
        public ResponseCalendarioTurnosDto CreateCalendarioTurnos(CalendarioTurnosDto calendarioTurno)
        {
            List <CalendarioTurnos> Lista = new List <CalendarioTurnos>()
            {
            };

            foreach (var item in calendarioTurno.CalendarioTurnos)
            {
                CalendarioTurnos entity = new CalendarioTurnos
                {
                    IdEspecialidad = item.IdEspecialidad,
                    IdEspecialista = item.IdEspecialista,
                    DiaId          = item.DiaId,
                    HoraInicio     = Convert.ToDateTime(item.HoraInicio),
                    HoraFin        = Convert.ToDateTime(item.HoraFin)
                };

                Lista.Add(entity);
                _repository.Add <CalendarioTurnos>(entity);
            }

            return(new ResponseCalendarioTurnosDto {
                ListaCalendarioTurnos = Lista
            });
        }
        private void VerificarAgenda()
        {
            String [] Dia = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado" };

            if (Request["idItem"].ToString() != "0")
            {
                Item oRegistro = new Item();
                oRegistro = (Item)oRegistro.Get(typeof(Item), int.Parse(Request["idItem"].ToString()));
                item.Text = oRegistro.Nombre;
            }



            string m_ssqlItem = " AND A.IdItem=" + Request["idItem"].ToString();

            m_ssqlItem += " AND A.IdTipoServicio=" + Request["idTipoServicio"].ToString();

            DateTime fecha = DateTime.Now.AddDays(1);// ..Parse(cldTurno.SelectedDate.ToShortDateString());

            ISession m_session = NHibernateHttpModule.CurrentSession;
            string   m_ssql    = " FROM Agenda A WHERE A.Baja=0 " + m_ssqlItem; //AND A.IdTipoServicio=" + ddlTipoServicio.SelectedValue +
            //" AND  (A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "' or  A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "')" +
            //" AND  A.FechaHasta>='" + fecha.ToString("yyyyMMdd") + "'" ;

            IQuery q = m_session.CreateQuery(m_ssql);

            List <CalendarioTurnos> resultadosList = new List <CalendarioTurnos>();
            IList lista = q.List();

            if (lista.Count > 0)
            {
                foreach (Agenda oAgenda in lista)
                {
                    DateTime fechaDesde = oAgenda.FechaDesde; if (fechaDesde < fecha)
                    {
                        fechaDesde = fecha;
                    }
                    DateTime fechaHasta = oAgenda.FechaHasta;

                    ICriteria crit = m_session.CreateCriteria(typeof(AgendaDia));
                    crit.Add(Expression.Eq("IdAgenda", oAgenda));


                    IList listaDias = crit.List();
                    if (listaDias.Count > 0)
                    {
                        foreach (AgendaDia oAgendaDia in listaDias)
                        {
                            DateTime fechaDesdeaux = fechaDesde;
                            DateTime fechaHastaaux = fechaHasta;
                            while (fechaDesdeaux <= fechaHastaaux)
                            {
                                int dia = (int)fechaDesdeaux.DayOfWeek;  //bool result = false;
                                if (dia == oAgendaDia.Dia)
                                {
                                    int cantidadTurnosdados = int.Parse(CalcularTurnoDisponible(fechaDesdeaux));

                                    int cantidadTurnos            = oAgendaDia.LimiteTurnos;
                                    int cantidadTurnosDisponibles = cantidadTurnos - cantidadTurnosdados;
                                    if (cantidadTurnosDisponibles > 0)
                                    {
                                        CalendarioTurnos oCalendario = new CalendarioTurnos();
                                        oCalendario.Fecha = fechaDesdeaux;
                                        oCalendario.CantidadTurnosDisponibles = cantidadTurnosDisponibles;
                                        oCalendario.Dia = Dia[dia];
                                        resultadosList.Add(oCalendario);
                                    }
                                }
                                fechaDesdeaux = fechaDesdeaux.AddDays(1);
                            }
                        }
                    }
                    //else
                    //    result = false;
                }
            }
            //       resultadosList = from CalendarioTurnos in resultadosList orderby CalendarioTurnos.Fecha ascending select CalendarioTurnos;


            resultadosList = (from n in resultadosList
                              orderby GetDynamicSortProperty(n, "Fecha") ascending
                              select n).ToList();


            gv.DataSource = resultadosList;
            gv.DataBind();
            //return result;
        }