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