public JsonResult GetFiltrosJson()
        {
            int userId    = GetUsuarioLogueado();
            int ClienteId = GetClienteSeleccionado();
            IEnumerable <Filtro> filtros   = tableroRepository.GetFiltros(0, userId, ClienteId);
            FiltrosViewModel     filtrosVM = new FiltrosViewModel();

            foreach (Filtro f in filtros.Where(m => m.TipoFiltro == TipoFiltro.CheckBox))
            {
                var FiltroVM = new FiltroCheckViewModel();
                foreach (Item i in f.Items)
                {
                    FiltroVM.Items.Add(new ItemViewModel()
                    {
                        IdItem = i.IdItem, TipoItem = i.TipoItem, Selected = i.Selected, Descripcion = i.Descripcion.ToUpper()
                    });
                }
                FiltroVM.Id     = f.Id;
                FiltroVM.Nombre = f.Nombre;
                filtrosVM.FiltrosChecks.Add(FiltroVM);
            }

            foreach (Filtro f in filtros.Where(m => m.TipoFiltro == TipoFiltro.Fecha))
            {
                var FiltroVM = new FiltroFechaViewModel();

                foreach (Item i in f.Anios)
                {
                    FiltroVM.Anios.Add(new ItemDropDownListViewModel()
                    {
                        Value = i.IdItem, Descripcion = i.Descripcion
                    });
                }
                foreach (Item i in f.Meses)
                {
                    FiltroVM.Meses.Add(new ItemDropDownListViewModel()
                    {
                        Value = i.IdItem, Descripcion = i.Descripcion, ParentValue = i.IdParent
                    });
                }
                foreach (Item i in f.Semanas)
                {
                    FiltroVM.Semanas.Add(new ItemDropDownListViewModel()
                    {
                        Value = i.IdItem, Descripcion = i.Descripcion, ParentValue = i.IdParent
                    });
                }
                foreach (Item i in f.Trimestres)
                {
                    FiltroVM.Trimestres.Add(new ItemDropDownListViewModel()
                    {
                        Value = i.IdItem, Descripcion = i.Descripcion, ParentValue = i.IdParent
                    });
                }
                FiltroVM.Id     = f.Id;
                FiltroVM.Nombre = f.Nombre;
                filtrosVM.FiltrosFechas.Add(FiltroVM);
            }
            return(Json(filtrosVM, JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        protected ActionResult AplicarFiltros(FiltrosViewModel filtros, int TableroId, int IdModulo)
        {
            int userId    = GetUsuarioLogueado();
            int clienteId = GetClienteSeleccionado();

            userId = usuarioRepository.GetUsuarioPerformance(userId);

            var filtrostotal = new FiltrosViewModel();

            foreach (var ff in filtros.FiltrosFechas)
            {
                if (ff.DiaDesde != null || ff.DiaHasta != null ||
                    ff.MesDesde != null || ff.MesHasta != null ||
                    ff.SemanaDesde != null || ff.SemanaHasta != null ||
                    ff.TrimestreDesde != null || ff.TrimestreHasta != null)
                {
                    filtrostotal.FiltrosFechas.Add(ff);
                }
            }

            if (IdModulo == 1 || IdModulo == 1)
            {
                var filtrosbloqueados = GetFiltrosBloqueadosObj(TableroId);


                if (filtrosbloqueados != null)
                {
                    foreach (var fb in filtrosbloqueados.FiltrosChecks)
                    {
                        var flt = new FiltroCheckViewModel()
                        {
                            Id     = fb.Id,
                            Nombre = fb.Nombre
                        };

                        foreach (var itm in fb.Items)
                        {
                            flt.Items.Add(new ItemViewModel()
                            {
                                Descripcion = itm.Descripcion,
                                IdItem      = itm.IdItem,
                                isLocked    = itm.isLocked,
                                Selected    = itm.Selected,
                                TipoItem    = itm.TipoItem
                            });
                        }

                        filtrostotal.FiltrosChecks.Add(flt);
                    }
                }
            }

            foreach (var fc in filtros.FiltrosChecks)
            {
                if (fc.Items.Any(i => i.Selected))
                {
                    if (!filtrostotal.FiltrosChecks.Any(f => f.Id == fc.Id))
                    {
                        var newf = new FiltroCheckViewModel()
                        {
                            Id     = fc.Id,
                            Nombre = fc.Nombre
                        };

                        foreach (var itm in fc.Items.Where(fcitm => fcitm.Selected))
                        {
                            newf.Items.Add(itm);
                        }

                        filtrostotal.FiltrosChecks.Add(newf);
                    }
                    else
                    {
                        var fd = filtrostotal.FiltrosChecks.FirstOrDefault(fdd => fdd.Id == fc.Id);

                        if (fd != null)
                        {
                            foreach (var itm in fc.Items)
                            {
                                if (!fd.Items.Any(it => it.IdItem == itm.IdItem))
                                {
                                    fd.Items.Add(itm);
                                }
                            }
                        }
                    }
                }
            }


            var    serializer = new JavaScriptSerializer();
            string json       = new JavaScriptSerializer().Serialize(filtrostotal);

            usuarioRepository.saveFiltros(clienteId, userId, json);

            bool isLocked = false;
            int  tabId    = -1;

            if (IdModulo == 1 || IdModulo == 2)
            {
                tabId    = TableroId;
                isLocked = filtroRepository.IsFiltrosLocked(tabId);
            }

            FiltrosViewModel model = GetFiltrosAplicadosYBloqueados(IdModulo, tabId);

            model.isLocked = isLocked;

            return(PartialView("_Filtros", model));
        }
Beispiel #3
0
        protected FiltrosViewModel GetFiltrosAplicadosYBloqueados(int IdModulo, int tableroId)
        {
            int userId = GetUsuarioLogueado();

            userId = usuarioRepository.GetUsuarioPerformance(userId);

            int ClienteId = GetClienteSeleccionado();

            //traigo todos los posibles filtros
            Filtros          filtros   = filtroRepository.GetFiltros(userId, ClienteId, IdModulo);
            FiltrosViewModel filtrosVM = new FiltrosViewModel();

            foreach (FiltroCheck f in filtros.FiltrosChecks)
            {
                var FiltroVM = new FiltroCheckViewModel();
                foreach (ItemFiltro i in f.Items)
                {
                    FiltroVM.Items.Add(new ItemViewModel()
                    {
                        IdItem = i.IdItem, TipoItem = i.TipoItem, Selected = i.Selected, Descripcion = i.Descripcion.ToUpper()
                    });
                }
                FiltroVM.Id     = f.Id;
                FiltroVM.Nombre = Reporting.Resources.Filtros.ResourceManager.GetString(string.Format("{0}", f.Id));
                filtrosVM.FiltrosChecks.Add(FiltroVM);
            }

            foreach (FiltroFecha f in filtros.FiltrosFechas)
            {
                var FiltroVM = new FiltroFechaViewModel();
                FiltroVM.Id     = f.Id;
                FiltroVM.Nombre = Reporting.Resources.Filtros.ResourceManager.GetString(string.Format("{0}", f.Id));
                FiltroVM.TipoFechaSeleccionada = "D";
                filtrosVM.FiltrosFechas.Add(FiltroVM);
            }

            List <ReportingFiltroNombreCliente> filtrosConNombre = filtroRepository.getFiltroNombreCliente(ClienteId);

            foreach (ReportingFiltroNombreCliente fnc in filtrosConNombre)
            {
                var filtro = filtrosVM.FiltrosFechas.SingleOrDefault(f => f.Id == fnc.ReportingFiltros.identificador);
                if (filtro != null)
                {
                    filtro.Nombre = fnc.Nombre;
                }
            }
            foreach (ReportingFiltroNombreCliente fnc in filtrosConNombre)
            {
                var filtro = filtrosVM.FiltrosChecks.SingleOrDefault(f => f.Id == fnc.ReportingFiltros.identificador);
                if (filtro != null)
                {
                    filtro.Nombre = fnc.Nombre;
                }
            }

            //Filtros aplicados por el usuario y actualizo dentro de los filtros generales el estado que tienen
            Filtros filtrosSeleccionados = GetFiltrosAplicadosObj(ClienteId, userId);

            if (filtrosSeleccionados != null)
            {
                foreach (FiltroFecha fl in filtrosSeleccionados.FiltrosFechas)
                {
                    var ff = filtrosVM.FiltrosFechas.FirstOrDefault(f => f.Id == fl.Id);
                    if (ff != null)
                    {
                        ff.TipoFechaSeleccionada = fl.TipoFechaSeleccionada;

                        if (fl.DiaDesde != null)
                        {
                            ff.DiaDesde = fl.DiaDesde;
                        }
                        if (fl.DiaHasta != null)
                        {
                            ff.DiaHasta = fl.DiaHasta;
                        }

                        if (fl.MesDesde != null)
                        {
                            ff.MesDesde = fl.MesDesde;
                        }
                        if (fl.MesHasta != null)
                        {
                            ff.MesHasta = fl.MesHasta;
                        }

                        if (fl.SemanaDesde != null)
                        {
                            ff.SemanaDesde = fl.SemanaDesde;
                        }
                        if (fl.SemanaHasta != null)
                        {
                            ff.SemanaHasta = fl.SemanaHasta;
                        }

                        if (fl.TrimestreDesde != null)
                        {
                            ff.TrimestreDesde = fl.TrimestreDesde;
                        }
                        if (fl.TrimestreHasta != null)
                        {
                            ff.TrimestreHasta = fl.TrimestreHasta;
                        }
                    }
                }
                foreach (FiltroCheck fl in filtrosSeleccionados.FiltrosChecks)
                {
                    var fc = filtrosVM.FiltrosChecks.FirstOrDefault(f => f.Id == fl.Id);
                    if (fc != null)
                    {
                        foreach (ItemFiltro s in fl.Items)
                        {
                            var itm = fc.Items.FirstOrDefault(i => i.IdItem == s.IdItem);
                            if (itm != null)
                            {
                                itm.Selected = true;
                            }
                        }
                    }
                }
            }
            //Traigo los filtros bloqueados del usuario, si esta en la estructura de filtros generales lo marco como bloqueado
            if (IdModulo == 1 || IdModulo == 2)
            {
                filtrosVM.permitebloquearfiltros = true;
                Filtros filtrosBloqueados = GetFiltrosBloqueadosObj(tableroId);
                if (filtrosBloqueados != null)
                {
                    filtrosVM.isLocked = true;
                    foreach (FiltroCheck fl in filtrosBloqueados.FiltrosChecks)
                    {
                        var fc = filtrosVM.FiltrosChecks.FirstOrDefault(f => f.Id == fl.Id);
                        if (fc != null)
                        {
                            foreach (ItemFiltro s in fl.Items)
                            {
                                var itm = fc.Items.FirstOrDefault(i => i.IdItem == s.IdItem);
                                if (itm != null)
                                {
                                    itm.Selected = true;
                                    itm.isLocked = true;
                                }
                            }
                        }
                    }
                }
            }

            return(filtrosVM);
        }