Exemplo n.º 1
0
        public IEnumerable <TODisponible> GetDisponiblesParametroDisp(int cla_cont, int pro_cont, int year, int month, int day, string esp_mdit, float ter_codi, string Op_Disp = "")
        {
            DateTime fechainicial = DateTime.Now;
            DateTime fechaFinal   = DateTime.Now;

            //disponibilidad ya sea por tercero o espacio
            daoAgenda.GetFechaMinMaxDiponibilidad(emp_codi, year, month, day, cla_cont, out fechainicial, out fechaFinal, pro_cont, esp_mdit, ter_codi, Op_Disp);
            var producto = daoProducto.GetProducto(emp_codi, pro_cont);

            //int CantEspacios = daoAgenda.CantidadHorarios(emp_codi, cla_cont, year, month, day, ter_codi, producto.Pro_cont, esp_mdit);
            if (fechainicial == DateTime.MinValue)
            {
                fechainicial = new DateTime(year, month, day, 6, 0, 0);
                fechaFinal   = new DateTime(year, month, day);
            }

            List <TODisponible> listItems = new List <TODisponible>();

            for (DateTime i = fechainicial; i < fechaFinal && producto != null && producto.Pro_dmin > 0; i = i.AddMinutes(producto.Pro_dmin))
            {
                TODisponible item = new TODisponible();
                item.FechaInicio = i;
                item.FechaFin    = i.AddMinutes(producto.Pro_dmin);
                if (fechaFinal < item.FechaFin)
                {
                    break;
                }
                listItems.Add(item);
            }

            //listado de los intervalos que se encuentran no disponibles u ocupados
            //List<TOOcupado> intervalosNoDisponiblesOcupados = daoAgenda.GetOcupadosDipo(emp_codi, cla_cont, year, month, day, esp_mdit, -1, pro_cont, ter_codi);

            int CantEspacios = daoAgenda.CantidadHorarios(emp_codi, cla_cont, fechainicial.Year, fechainicial.Month, fechainicial.Day, ter_codi, pro_cont, esp_mdit, Op_Disp);
            List <TOOcupado> intervalosNoDisponiblesOcupados = daoAgenda.GetOcupadosDipo(emp_codi, cla_cont, fechainicial.Year, fechainicial.Month, fechainicial.Day, esp_mdit, -1, pro_cont, Op_Disp, ter_codi);

            DateTime ahora = DateTime.Now;

            listItems.ForEach(itemHora =>
            {
                DTOEntities.TSalida salida = ValidarDisponibilidadHorario(itemHora.FechaInicio,
                                                                          itemHora.FechaFin, cla_cont, ter_codi, pro_cont, esp_mdit, Op_Disp, CantEspacios, intervalosNoDisponiblesOcupados);
                if (salida.retorno == 0)
                {
                    itemHora.Estado = 1;
                }
                else
                {
                    itemHora.Estado = 0;
                }
            });
            if (listItems != null)
            {
                return(listItems.Where(o => o.Estado == 0).ToList());
            }
            return(null);
        }
Exemplo n.º 2
0
        public TOTransaction <List <TODisponible> > GetDisponiblesParametroViewMonth(int cla_cont, int pro_cont, int year, int month, string esp_mdit, float ter_codi, string Op_Disp = "")
        {
            List <TODisponible> result = new List <TODisponible>();

            try
            {
                DateTime CurrentDate = DateTime.Now;
                int      MinDay      = 1;
                if (CurrentDate.Month == month && CurrentDate.Year == year)
                {
                    MinDay = CurrentDate.Day;
                }
                int DaysInMonth = DateTime.DaysInMonth(year, month);
                for (int CurrentDay = MinDay; CurrentDay <= DaysInMonth; CurrentDay++)
                {
                    TODayDisponiblity DayView      = new TODayDisponiblity();
                    DateTime          fechainicial = DateTime.Now;
                    DateTime          fechaFinal   = DateTime.Now;
                    //disponibilidad ya sea por tercero o espacio
                    daoAgenda.GetFechaMinMaxDiponibilidad(emp_codi, year, month, CurrentDay, cla_cont, out fechainicial, out fechaFinal, pro_cont, esp_mdit, ter_codi, Op_Disp);
                    var producto = daoProducto.GetProducto(emp_codi, pro_cont);

                    //int CantEspacios = daoAgenda.CantidadHorarios(emp_codi, cla_cont, year, month, day, ter_codi, producto.Pro_cont, esp_mdit);
                    if (fechainicial == DateTime.MinValue)
                    {
                        fechainicial = new DateTime(year, month, CurrentDay, 6, 0, 0);
                        fechaFinal   = new DateTime(year, month, CurrentDay);
                    }

                    List <TODisponible> listItems = new List <TODisponible>();
                    for (DateTime i = fechainicial; i < fechaFinal && producto != null && producto.Pro_dmin > 0; i = i.AddMinutes(producto.Pro_dmin))
                    {
                        TODisponible item = new TODisponible();
                        item.FechaInicio = i;
                        item.FechaFin    = i.AddMinutes(producto.Pro_dmin);
                        if (fechaFinal < item.FechaFin)
                        {
                            break;
                        }
                        listItems.Add(item);
                    }

                    //listado de los intervalos que se encuentran no disponibles u ocupados
                    //List<TOOcupado> intervalosNoDisponiblesOcupados = daoAgenda.GetOcupadosDipo(emp_codi, cla_cont, year, month, day, esp_mdit, -1, pro_cont, ter_codi);

                    int CantEspacios = daoAgenda.CantidadHorarios(emp_codi, cla_cont, fechainicial.Year, fechainicial.Month, fechainicial.Day, ter_codi, pro_cont, esp_mdit, Op_Disp);
                    List <TOOcupado> intervalosNoDisponiblesOcupados = daoAgenda.GetOcupadosDipo(emp_codi, cla_cont, fechainicial.Year, fechainicial.Month, fechainicial.Day, esp_mdit, -1, pro_cont, Op_Disp, ter_codi);

                    DateTime ahora = DateTime.Now;

                    listItems.ForEach(itemHora =>
                    {
                        DTOEntities.TSalida salida = ValidarDisponibilidadHorario(itemHora.FechaInicio,
                                                                                  itemHora.FechaFin, cla_cont, ter_codi, pro_cont, esp_mdit, Op_Disp, CantEspacios, intervalosNoDisponiblesOcupados);
                        if (salida.retorno == 0)
                        {
                            itemHora.Estado = 1;
                        }
                        else
                        {
                            itemHora.Estado = 0;
                        }
                    });
                    if (listItems != null && listItems.Any())
                    {
                        result.AddRange(listItems.Where(o => o.Estado == 0).ToList());
                    }
                }

                return(new TOTransaction <List <TODisponible> >()
                {
                    ObjTransaction = result, Retorno = 0, TxtError = ""
                });
            }

            catch (Exception ex)
            {
                return(new TOTransaction <List <TODisponible> >()
                {
                    ObjTransaction = null, Retorno = 1, TxtError = ex.Message
                });
            }
        }