private IIndicadorAutomaticoStrategy GetStrategy(int idIndicador) { IndicadorAutomatico automatico = IndicadorAutomaticoRepository.GetByIdIndicador(idIndicador).First(); switch (automatico.CategoriaIndicadorAutomatico) { case Enums.Enum.CategoriaIndicadorAutomatico.CPI: return(IndicadorAutomaticoCPIStrategy); case Enums.Enum.CategoriaIndicadorAutomatico.CPI_Servicios: return(IndicadorAutomaticoCPIServiciosStrategy); case Enums.Enum.CategoriaIndicadorAutomatico.CPI_Llave_En_Mano: return(IndicadorAutomaticoCPILlaveManoStrategy); default: return(null); } }
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 IList <IndicadorAutomaticoViewModel> Todos() { return(AutoMapper.Mapper.Map <IList <IndicadorAutomaticoViewModel> >(IndicadorAutomaticoRepository.Todos().ToList())); }
public async Task <int> Guardar(IndicadorViewModel indicadorViewModel, PersonaViewModel personaGuarda) { bool modificado = false; int mesActual = DateTimeHelper.OntenerFechaActual().Month; int idIndicadorOriginal = 0; if (indicadorViewModel.Id > 0) { Indicador indicadorOriginal = IndicadorRepository.GetById(indicadorViewModel.Id).First(); if (HayCambios(indicadorOriginal, indicadorViewModel) && await MedicionRepository.Buscar(new MedicionViewModel { IndicadorID = indicadorViewModel.Id }).AnyAsync(m => (int)m.Mes != mesActual)) { idIndicadorOriginal = indicadorViewModel.Id; indicadorViewModel.Id = 0; modificado = true; } } // Borrar los responsables previos await ResponsableIndicadorRepository.EliminarPorIndicador(indicadorViewModel.Id); // Borrar los interesados previos await InteresadoIndicadorRepository.EliminarPorIndicador(indicadorViewModel.Id); // Borrar los permisos previos await AccesoIndicadorRepository.EliminarPorIndicador(indicadorViewModel.Id); Indicador indicador = AutoMapper.Mapper.Map <Indicador>(indicadorViewModel); if (modificado) { indicador.FechaCreacion = indicador.FechaCreacion.Value.AddMinutes(1); } indicador.MetaAceptableMetaID = await GuardarMeta(indicadorViewModel.MetaAceptableViewModel); indicador.MetaAMejorarMetaID = await GuardarMeta(indicadorViewModel.MetaAMejorarViewModel); indicador.MetaExcelenteMetaID = await GuardarMeta(indicadorViewModel.MetaExcelenteViewModel); indicador.MetaInaceptableMetaID = await GuardarMeta(indicadorViewModel.MetaInaceptableViewModel); indicador.MetaSatisfactoriaMetaID = await GuardarMeta(indicadorViewModel.MetaSatisfactoriaViewModel); // Guardar el indicador await IndicadorRepository.Guardar(indicador); if (indicador.Grupo == 0) { indicador.Grupo = indicador.IndicadorID; await IndicadorRepository.Guardar(indicador); } if (modificado) { IndicadorAutomatico indicadorAutomatico = await IndicadorAutomaticoRepository.GetByIdIndicador(idIndicadorOriginal).FirstOrDefaultAsync(); if (indicadorAutomatico != null) { indicadorAutomatico.Indicador = null; indicadorAutomatico.IndicadorID = indicador.IndicadorID; await IndicadorAutomaticoRepository.Guardar(indicadorAutomatico); IndicadorAutomaticoViewModel indicadorAutomaticoViewModel = AutoMapper.Mapper.Map <IndicadorAutomaticoViewModel>(indicadorAutomatico); IndicadorAutomaticoRepository.DetenerJob(indicadorAutomaticoViewModel); IndicadorAutomaticoRepository.IniciarJob(indicadorAutomaticoViewModel); } } // Guardar los responsables await GuardarResponsables(indicadorViewModel.Responsables, indicador.IndicadorID); // Guardar los interesados await GuardarInteresados(indicadorViewModel.Interesados, indicador.IndicadorID); if (modificado) { // Si hay mediciones cargadas para el indicador que se esta modificando, actualizar la referencia al nuevo indicador IList <Medicion> mediciones = MedicionRepository.Buscar(new MedicionViewModel { IndicadorID = idIndicadorOriginal, Mes = (Enums.Enum.Mes)mesActual }).ToList(); if (mediciones != null && mediciones.Count > 0) { foreach (Medicion medicion in mediciones) { medicion.IndicadorID = indicador.IndicadorID; await MedicionRepository.Guardar(medicion); } } } await AuditarModificacionIndicador(personaGuarda); return(indicador.IndicadorID); }