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)); }
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); }
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)); }
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)); }
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); }
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)); }