示例#1
0
        public async Task <ActionResult> Buscar(BuscarIndicadorViewModel model)
        {
            ViewBag.SinResultados = null;

            model.PersonaLogueadaViewModel = (PersonaViewModel)Session["Persona"];

            if (!model.PersonaLogueadaViewModel.EsAdmin)
            {
                model.Busqueda.AreaID = model.PersonaLogueadaViewModel.AreaViewModel.Id.ToString();
            }

            IList <IndicadorViewModel> indicadores = await IndicadorService.Buscar(model);

            model.Resultados      = indicadores;
            model.Busqueda.Titulo = "Indicadores";

            ViewBag.Titulo = model.Busqueda.Titulo;

            if (indicadores == null || indicadores.Count <= 0)
            {
                ViewBag.SinResultados = "No se han encontrado indicadores para la búsqueda realizada.";
            }

            return(View(model));
        }
示例#2
0
        public async Task <IList <IndicadorViewModel> > Buscar(BuscarIndicadorViewModel filtro)
        {
            Persona persona = await PersonaRepository.GetByUserName(filtro.PersonaLogueadaViewModel.NombreUsuario).FirstOrDefaultAsync();

            IList <IndicadorViewModel> indicadores = AutoMapper.Mapper.Map <IList <IndicadorViewModel> >(IndicadorRepository.Buscar(filtro).ToList());

            CargarPermisosAIndicadores(indicadores, persona);

            return(indicadores);
        }
示例#3
0
        public ActionResult Buscar(string msgExito)
        {
            BuscarIndicadorViewModel model = new BuscarIndicadorViewModel();

            model.Busqueda.Titulo          = "Indicadores";
            model.PersonaLogueadaViewModel = (PersonaViewModel)Session["Persona"];

            if (!model.PersonaLogueadaViewModel.EsAdmin)
            {
                model.Busqueda.AreaID = model.PersonaLogueadaViewModel.AreaViewModel.Id.ToString();
            }

            ViewBag.Titulo       = model.Busqueda.Titulo;
            ViewBag.MensageExito = msgExito;

            return(View(model));
        }
示例#4
0
        public async Task <ActionResult> ObtenerHeatMapViewModel(string nombre)
        {
            LimpiarSession();

            BuscarIndicadorViewModel model = new BuscarIndicadorViewModel();

            model.PersonaLogueadaViewModel = (PersonaViewModel)Session["Persona"];
            model.AnioTablero = (await AnioTableroService.GetById(Int32.Parse((string)Session["IdAnioTablero"]))).Anio;

            string idAreaTablero = (string)Session["IdAreaTablero"];

            if (idAreaTablero != null && !idAreaTablero.Equals("0"))
            {
                model.Busqueda.AreaID = idAreaTablero;
            }
            else
            {
                model.TodasLasAreas = true;;
            }

            return(Json(await MedicionService.ObtenerHeatMapViewModel(model), JsonRequestBehavior.AllowGet));
        }
示例#5
0
        public async Task <HeatMapViewModel> ObtenerHeatMapViewModel(BuscarIndicadorViewModel buscarIndicadorViewModel)
        {
            Persona persona = await PersonaRepository.GetByUserName(buscarIndicadorViewModel.PersonaLogueadaViewModel.NombreUsuario).FirstOrDefaultAsync();

            IList <IndicadorAutomaticoViewModel> todosIndicadoresAutomaticos = AutoMapper.Mapper.Map <IList <IndicadorAutomaticoViewModel> >(IndicadorAutomaticoRepository.Todos().ToList());

            IList <FilaHeatMapViewModel> filasHeatMapViewModel = AutoMapper.Mapper.Map <IList <FilaHeatMapViewModel> >(IndicadorRepository.Buscar(buscarIndicadorViewModel).ToList());

            CargarPermisosAIndicadores(filasHeatMapViewModel, persona);

            IList <MedicionViewModel> mediciones = await Todas(buscarIndicadorViewModel.AnioTablero);

            IList <CeldaHeatMapViewModel> celdasHeatMapViewModel = new List <CeldaHeatMapViewModel>();

            HeatMapViewModel heatMapViewModel = new HeatMapViewModel();

            heatMapViewModel.Meses = Enum.GetValues(typeof(Enums.Enum.Mes)).Cast <Enums.Enum.Mes>().Select(v => v.ToString()).ToList();
            heatMapViewModel.FilasHeatMapViewModel = filasHeatMapViewModel;

            DateTime fechaActual = DateTimeHelper.OntenerFechaActual();

            foreach (Enums.Enum.Mes mes in Enum.GetValues(typeof(Enums.Enum.Mes)).Cast <Enums.Enum.Mes>())
            {
                if ((int)mes <= fechaActual.Month || buscarIndicadorViewModel.AnioTablero < fechaActual.Year)
                {
                    IList <MedicionViewModel> medicionesPorMes = mediciones.Where(m => m.Mes == mes).OrderBy(m => m.IndicadorViewModel.Id).ToList();

                    int i = 0;

                    while (i < filasHeatMapViewModel.Count)
                    {
                        FilaHeatMapViewModel indicador = filasHeatMapViewModel[i];

                        if (
                            (indicador.FechaInicioValidez == null ||
                             (indicador.FechaInicioValidez != null &&
                              (
                                  (indicador.FechaInicioValidez.Value.Year < buscarIndicadorViewModel.AnioTablero) ||
                                  (
                                      indicador.FechaInicioValidez.Value.Year == buscarIndicadorViewModel.AnioTablero &&
                                      indicador.FechaInicioValidez.Value.Month <= (int)mes
                                  )
                              )
                             )
                            ) &&
                            (
                                indicador.FechaFinValidez == null ||
                                (indicador.FechaFinValidez != null &&
                                 (
                                     (indicador.FechaFinValidez.Value.Year > buscarIndicadorViewModel.AnioTablero) ||
                                     (
                                         indicador.FechaFinValidez.Value.Year == buscarIndicadorViewModel.AnioTablero &&
                                         indicador.FechaFinValidez.Value.Month >= (int)mes
                                     )
                                 )
                                )
                            )
                            )
                        {
                            CeldaHeatMapViewModel celdaHeatMapViewModel = new CeldaHeatMapViewModel();
                            celdaHeatMapViewModel.IndiceIndicador             = i + 1;
                            celdaHeatMapViewModel.Mes                         = (int)mes;
                            celdaHeatMapViewModel.IdIndicador                 = indicador.IdIndicador;
                            celdaHeatMapViewModel.GrupoIndicador              = indicador.Grupo;
                            celdaHeatMapViewModel.NombreMes                   = mes.ToString();
                            celdaHeatMapViewModel.NombreIndicador             = indicador.NombreIndicador;
                            celdaHeatMapViewModel.TieneAccesoLecturaEscritura = indicador.TieneAccesoLecturaEscritura;
                            celdaHeatMapViewModel.EsAutomatico                = todosIndicadoresAutomaticos.Any(ia => ia.IndicadorViewModel.Grupo == celdaHeatMapViewModel.GrupoIndicador);

                            if (medicionesPorMes.Any(m => m.IndicadorViewModel.Grupo == indicador.Grupo && m.Mes == mes))
                            {
                                MedicionViewModel medicionPorMes = medicionesPorMes.First(m => m.IndicadorViewModel.Grupo == indicador.Grupo && m.Mes == mes);
                                celdaHeatMapViewModel.IdMedicion = medicionPorMes.MedicionId;

                                if (!medicionPorMes.NoAplica)
                                {
                                    celdaHeatMapViewModel.Medicion        = medicionPorMes.Valor;
                                    celdaHeatMapViewModel.ColorMeta       = ObtenerColorCeldaHeatMap(medicionPorMes);
                                    celdaHeatMapViewModel.MedicionCargada = true;
                                }
                                else
                                {
                                    celdaHeatMapViewModel.NoAplica = true;
                                }
                            }

                            celdasHeatMapViewModel.Add(celdaHeatMapViewModel);
                        }
                        i++;
                    }
                }
            }
            heatMapViewModel.Celdas = celdasHeatMapViewModel;
            return(heatMapViewModel);
        }
示例#6
0
        public IQueryable <Indicador> Buscar(BuscarIndicadorViewModel filtro)
        {
            string rolAdmin = EnumHelper <Enums.Enum.Rol> .GetDisplayValue(Enums.Enum.Rol.Admin);

            IQueryable <Indicador> queryable = this.context.Indicadores;

            if (filtro.UltimoDeCadaGrupo)
            {
                queryable = queryable.GroupBy(i => i.Grupo)
                            .Select(grp => new
                {
                    grp.Key,
                    LastAccess = grp.OrderByDescending(x => x.FechaCreacion).FirstOrDefault()
                }).Select(g => g.LastAccess);
            }

            if (filtro.AnioTablero > 0)
            {
                queryable = queryable.Where(a => a.FechaInicioValidez == null || a.FechaInicioValidez.Value.Year <= filtro.AnioTablero);
                queryable = queryable.Where(a => a.FechaFinValidez == null || a.FechaFinValidez.Value.Year >= filtro.AnioTablero);
            }
            if (filtro.Busqueda.Nombre != null && !string.IsNullOrEmpty(filtro.Busqueda.Nombre.Trim()))
            {
                queryable = queryable.Where(a => a.Nombre.Contains(filtro.Busqueda.Nombre.Trim()));
            }
            if (!string.IsNullOrEmpty(filtro.Busqueda.FechaCreacion))
            {
                DateTime desde = DateTime.Parse(filtro.Busqueda.FechaCreacion);
                queryable = queryable.Where(a => a.FechaCreacion >= desde);

                DateTime hasta = desde.AddDays(1).AddSeconds(-1);
                queryable = queryable.Where(a => a.FechaCreacion <= hasta);
            }
            if (filtro.Busqueda.UltimoUsuarioModifico != null && !string.IsNullOrEmpty(filtro.Busqueda.UltimoUsuarioModifico.Trim()))
            {
                queryable = queryable.Where(a => a.UltimoUsuarioModifico.Contains(filtro.Busqueda.UltimoUsuarioModifico.Trim()));
            }
            if (!string.IsNullOrEmpty(filtro.Busqueda.FechaUltimaModificacion))
            {
                DateTime desde = DateTime.Parse(filtro.Busqueda.FechaUltimaModificacion);
                queryable = queryable.Where(a => a.FechaUltimaModificacion >= desde);

                DateTime hasta = desde.AddDays(1).AddSeconds(-1);
                queryable = queryable.Where(a => a.FechaUltimaModificacion <= hasta);
            }
            if (filtro.Busqueda.AreaID != null && !string.IsNullOrEmpty(filtro.Busqueda.AreaID.Trim()))
            {
                int areaId = Int32.Parse(filtro.Busqueda.AreaID.Trim());
                queryable = queryable.Where(a => a.Objetivo.AreaID == areaId);
            }
            else if (filtro.PersonaLogueadaViewModel != null && !filtro.PersonaLogueadaViewModel.EsAdmin && !filtro.TodasLasAreas)
            {
                int areaId = filtro.PersonaLogueadaViewModel.AreaViewModel.Id;
                queryable = queryable.Where(a => a.Objetivo.AreaID == areaId);
            }
            if (filtro.Busqueda.ObjetivoID != null && !string.IsNullOrEmpty(filtro.Busqueda.ObjetivoID.Trim()))
            {
                int objetivoId = Int32.Parse(filtro.Busqueda.ObjetivoID.Trim());
                queryable = queryable.Where(a => a.ObjetivoID == objetivoId);
            }
            if (filtro.Busqueda.Grupo != 0)
            {
                queryable = queryable.Where(a => a.Grupo == filtro.Busqueda.Grupo);
            }
            if (filtro.Busqueda.Id != 0)
            {
                queryable = queryable.Where(a => a.IndicadorID == filtro.Busqueda.Id);
            }
            if (filtro.PersonaLogueadaViewModel != null && !filtro.PersonaLogueadaViewModel.EsJefeArea)
            {
                queryable = queryable.Where(a => a.Responsables.Any(r => r.Persona.UserName.Equals(filtro.PersonaLogueadaViewModel.NombreUsuario)) ||
                                            a.Interesados.Any(i => i.Persona.UserName.Equals(filtro.PersonaLogueadaViewModel.NombreUsuario)));
            }

            return(queryable.OrderBy(a => a.Objetivo.AreaID).ThenBy(a => a.ObjetivoID));
        }