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

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

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

            List <EjecucionCategoria> ejecuciones = await controlEjecucionCategoria.GetHijosFromCatIDPerID(IdCategoria, IdPeriodo);

            ViewBag.Numero  = Numero;
            ViewBag.alto    = alto;
            ViewBag.ancho   = ancho;
            ViewBag.titulo  = titulo;
            ViewBag.periodo = periodo;
            ViewBag.tipo    = tipo;

            if (ejecuciones.Count == 0)
            {
                ActionResult respuesta = await IndicadoresCategoria(numero, id, periodo, alto, ancho, titulo, tipo);

                return(respuesta);
            }

            return(View(ejecuciones));
        }
        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());
        }
        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));
        }