public async Task <ActionResult> CategoriaTrimestral(String numero, String id, String periodo, string alto, string ancho, string titulo, string tipo)

        {
            EjecucionCategoriaController controlEjecucionCategoria = new EjecucionCategoriaController(db, userManager);
            EvaluacionsController        controlEvaluacion         = new EvaluacionsController(db);


            var Numero    = Int32.Parse(numero);
            var Id        = Int32.Parse(id);
            var IdPeriodo = Int32.Parse(periodo);

            var periodoO = await db.Periodo.Where(n => n.id == IdPeriodo).FirstOrDefaultAsync();


            List <Object> respuesta = new List <object>();

            List <EjecucionCategoria> datos = new List <EjecucionCategoria>();

            // var numero = Int32.Parse(Request["posicion"]);
            // var id = Int32.Parse(Request["id"]);
            // var Periodo = Int32.Parse(Request["periodo"]);

            if (periodoO.tipo == "Total")
            {
                datos = await controlEjecucionCategoria.GetFromCategoriaYTotal(Id, IdPeriodo);
            }
            else
            {
                datos = await controlEjecucionCategoria.GetFromCategoriaYSubtotal(Id, IdPeriodo);
            }

            //======================================== obtiene los semanoforos===============================
            List <Evaluacion> evaluaciones = await controlEvaluacion.Get(Id, "Categotia");

            var semaforos = controlEvaluacion.SetEvaluacionCategoria(datos, evaluaciones);

            //======================================== obtiene los semanoforos===============================
            int ndato = 0;

            foreach (EjecucionCategoria dato in datos)
            {
                object[] EjecucionconSemaforo = { dato, semaforos[ndato] };
                respuesta.Add(EjecucionconSemaforo);
                ndato++;
            }


            ViewBag.Numero      = Numero;
            ViewBag.alto        = alto;
            ViewBag.ancho       = ancho;
            ViewBag.titulo      = titulo;
            ViewBag.periodo     = periodo;
            ViewBag.tipo        = tipo;
            ViewBag.Ejecuciones = respuesta;
            return(View());
        }
Esempio n. 2
0
        public async Task <IActionResult> DetailsPop(int id, string tipo = "", string mensaje = "")
        {
            ConfiguracionsController configuracionControl = new ConfiguracionsController(db, userManager);
            EvaluacionsController    controlEvaluacion    = new EvaluacionsController(db);
            UnidadesdeMedida         Unidad = new UnidadesdeMedida();

            EjecucionCalculada respuestaFormato = new EjecucionCalculada();

            Ejecucion ejec = await db.Ejecucion.Where(n => n.id == id).FirstOrDefaultAsync();

            if (ejec != null)
            {
                //-------------------------------------------------------identificar si un usuario tiene acceso a editar una ejecucion



                if (User.HasClaim(c => (c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/Ejecucion.Editar" && c.Value == "1") ||
                                  (c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/Planeacion.Editar" && c.Value == "1")))
                {
                    ViewBag.MostrarBotonEditarEjecucion = await configuracionControl.PermisoMostrarEditarEjecucion(User, ejec);
                }
                else
                {
                    ViewBag.MostrarBotonEditarEjecucion = false;
                }
                //-------------------------------------------------------identificar si un usuario tiene acceso a editar una ejecucion


                EjecucionCalculada respuesta = new EjecucionCalculada();


                //-------------- generacion de un objeto genérico para manejar los diferentes tipos de indicadores
                ObjectHandle manejador       = Activator.CreateInstance(null, "seguimiento.Formulas." + ejec.Indicador.TipoIndicador.file); //se crea un manejador  op -objeto generico- y un operador generico que permite llamar a las formulas con la cadena del tipo de indiciador: mantenimiento, incremento etc
                Object       op              = manejador.Unwrap();
                Type         t               = op.GetType();
                MethodInfo   operadorPeriodo = t.GetMethod("Calculo_periodo"); //operador es un metodo generico que refleja la funcionalidad de Calculo periodo

                Periodo   periodoLineaBase = db.Periodo.Where(n => n.tipo == "lineabase").FirstOrDefault();
                Ejecucion lineaBase        = db.Ejecucion.Where(n => n.idperiodo == periodoLineaBase.id && n.idindicador == ejec.idindicador).FirstOrDefault();


                List <Evaluacion> evaluaciones = await controlEvaluacion.Get(ejec.idindicador, "Indicador");

                object[] args       = { ejec, null };                                                        //carga los argumentos en un objeto
                var      respuesta2 = (EjecucionCalculada)operadorPeriodo.Invoke(op, args);                  //envia los argumentos mediante invoke al metodo Calculo_periodo
                respuesta        = respuesta2;
                respuestaFormato = controlEvaluacion.SetEvaluacion(Unidad.Formato(respuesta), evaluaciones); //almacena cada ejecucionCalcuada en la lista pero antes ajusta el formato con la clase unidadess de medida


                ViewBag.Adjuntos = await db.EjecucionAdjunto.Where(n => n.idejecucion == ejec.id).ToListAsync();

                ViewBag.tipo    = tipo;
                ViewBag.mensaje = mensaje;
            }
            return(View(respuestaFormato));
        }
        public async Task <ActionResult> Resumen(int ID)
        {
            EjecucionCategoriaController controladorEjecuciones = new EjecucionCategoriaController(db, userManager);
            NotasController          controlnotas         = new NotasController(db, userManager);
            ConfiguracionsController controlconfigutacion = new ConfiguracionsController(db, userManager);
            Configuracion            config = await controlconfigutacion.Get();

            EvaluacionsController controlEvaluacion = new EvaluacionsController(db);


            List <Object>             respuesta        = new List <object>();
            List <EjecucionCategoria> listaEjecuciones = new List <EjecucionCategoria>();


            var categoria = await getFromId(ID);  //retoma la categoria por id desde la base de datos

            //if (categoria == null) { return new HttpStatusCodeResult(404, "no se encuentran categoria"); }  //error generado si no se encuentra la categoria

            if (config.PonderacionTipo == "PonderacionAbsoluta")
            {
                PonderacionAbsoluta pond = new PonderacionAbsoluta(db, userManager);
                categoria.Ponderador = await pond.CategoriaPonderador(ID);
            }

            int notasAbiertas = await controlnotas.NumeroNotasEstadoCategoriaId(ID, "Abierta");

            int notasCerradas = await controlnotas.NumeroNotasEstadoCategoriaId(ID, "Cerrada");

            ViewBag.notasAbiertas = notasAbiertas;
            ViewBag.notasCerradas = notasCerradas;

            listaEjecuciones = await controladorEjecuciones.GetFromCategoria(categoria.id);

            //======================================== obtiene los semanoforos===============================
            List <Evaluacion> evaluaciones = await controlEvaluacion.Get(categoria.id, "Categotia");

            var semaforos = controlEvaluacion.SetEvaluacionCategoria(listaEjecuciones, evaluaciones);

            //======================================== obtiene los semanoforos===============================
            object[] CategoriaConejecuciones = { categoria, listaEjecuciones, semaforos };
            respuesta.Add(CategoriaConejecuciones);


            ViewBag.categorias = respuesta;

            //-----------------------------Campos adicionales Inicio
            List <CampoValor> campos = new List <CampoValor>();
            var Campos = db.Campo.Where(m => m.NivelPadre.id == categoria.Nivel.id || m.TodaCategoria == true).ToList();

            foreach (Campo campon in Campos)
            {
                CampoValor cp = new CampoValor();
                cp.Campo = campon;
                cp.Valor = db.ValorCampo.Where(m => m.CampoPadre.Id == campon.Id && m.CategoriaPadre.id == categoria.id).FirstOrDefault();
                campos.Add(cp);
            }
            ViewBag.campos = campos;
            //-----------------------------Campos adicionales Fin

            return(View(respuesta));
        }