public ActionResult GraficoMostrarMostrarPruebasReq(string idProyFK, string nombreRequerimiento) { string queryPruebasPorEstado = "EXEC cantidad_pruebas_por_estado " + "'" + nombreRequerimiento + "','" + idProyFK + "';"; List <PruebasPorEstado> resultado = (db.Database.SqlQuery <PruebasPorEstado>(queryPruebasPorEstado)).ToList(); if (resultado.Count() == 2) // Solo hay de 2 tipos { // Averiguar el estado de los 2 tipos de pruebas que hay // Algoritmo que encuentra el tipo de pruebas que hay, y rellena el array con el tipo de pruebas que faltan y le pone como cantidad 0 PruebasPorEstado incompletas = resultado.Find(x => x.estadoFinal == "Incompleto"); if (incompletas == null) { incompletas = new PruebasPorEstado(); incompletas.estadoFinal = "Incompleto"; incompletas.cantidad = 0; resultado.Add(incompletas); } PruebasPorEstado exitosas = resultado.Find(x => x.estadoFinal == "Exitoso"); if (exitosas == null) { exitosas = new PruebasPorEstado(); exitosas.estadoFinal = "Exitoso"; exitosas.cantidad = 0; resultado.Add(exitosas); } PruebasPorEstado fallidas = resultado.Find(x => x.estadoFinal == "Fallido"); if (fallidas == null) { fallidas = new PruebasPorEstado(); fallidas.estadoFinal = "Fallido"; fallidas.cantidad = 0; resultado.Add(fallidas); } } else if (resultado.Count() == 1) // Solo hay de un tipo // Algoritmo que encuentra el tipo de pruebas que hay, y rellena el array con el tipo de pruebas que faltan y le pone como cantidad 0 { // Averiguar el estado de la unica prueba if (resultado.ElementAt(0).estadoFinal == "Exitoso") { PruebasPorEstado fallidas = new PruebasPorEstado(); fallidas.cantidad = 0; fallidas.estadoFinal = "Fallido"; resultado.Add(fallidas); PruebasPorEstado incompletas = new PruebasPorEstado(); incompletas.cantidad = 0; incompletas.estadoFinal = "Incompleto"; resultado.Add(incompletas); } else if (resultado.ElementAt(0).estadoFinal == "Fallido") { PruebasPorEstado exitosas = new PruebasPorEstado(); exitosas.cantidad = 0; exitosas.estadoFinal = "Exitoso"; resultado.Add(exitosas); PruebasPorEstado incompletas = new PruebasPorEstado(); incompletas.cantidad = 0; incompletas.estadoFinal = "Incompleto"; resultado.Add(incompletas); } else { PruebasPorEstado exitosas = new PruebasPorEstado(); exitosas.cantidad = 0; exitosas.estadoFinal = "Exitoso"; resultado.Add(exitosas); PruebasPorEstado fallidas = new PruebasPorEstado(); fallidas.cantidad = 0; fallidas.estadoFinal = "Fallido"; resultado.Add(fallidas); } } string[] estados = resultado.Select(prueba => prueba.estadoFinal.ToString()).ToArray(); int[] cantidad = resultado.Select(prueba => prueba.cantidad).ToArray(); var chart = new System.Web.Helpers.Chart(width: 600, height: 400) // Armar el grafico .AddSeries(name: "Estado Pruebas", xValue: estados, yValues: cantidad) .AddLegend() .AddTitle("Estado de las Pruebas") .SetYAxis("Cantidad de Pruebas") .GetBytes("png"); return(File(chart, "image/bytes")); }
// GET: REQUERIMIENTOS/Edit/5 public async Task <ActionResult> Edit(string id, string idpro) { string user = User.Identity.Name; string rol = await this.seguridad_controller.GetRol(user); ViewBag.rol = rol; List <SelectListItem> testerDisp = new List <SelectListItem>(); if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } REQUERIMIENTOS rEQUERIMIENTOS = db.REQUERIMIENTOS.Find(idpro, id); if (rEQUERIMIENTOS == null) { return(HttpNotFound()); } //Datos para desplegar miembros de equipo disponibles string queryTesterDisp = "Exec recuperar_tester_disponible" + "'" + idpro + "'"; //Se hace el query a la base de datos var tempTesterDisp = (db.Database.SqlQuery <testerDisp>(queryTesterDisp)).ToList(); //Se pasa a un Select List para hacer dropdown foreach (testerDisp item in tempTesterDisp) { testerDisp.Add(new SelectListItem { Text = item.NombreEmpleado, Value = item.cedulaPK }); } testerDisp.Add(new SelectListItem { Text = "No asignado", Value = null }); // Query que me retorna la cantidad de pruebas por el estado string queryPruebasPorEstado = "EXEC cantidad_pruebas_por_estado " + "'" + rEQUERIMIENTOS.nombrePK + "','" + rEQUERIMIENTOS.idFK + "';"; List <PruebasPorEstado> resultado = (db.Database.SqlQuery <PruebasPorEstado>(queryPruebasPorEstado)).ToList(); bool pruebasIncompletas = false; bool pruebasFallidas = false; bool pruebasExitosas = false; // Hay que revisar de que tipo de pruebas hay if (resultado.Count() == 3) // Hay incompletas, fallidas y exitosas { pruebasIncompletas = true; pruebasFallidas = true; pruebasExitosas = true; } else if (resultado.Count() == 2) // Solo hay de 2 tipos { // Averiguar el estado de los 2 tipos de pruebas que hay PruebasPorEstado incompletas = resultado.Find(x => x.estadoFinal == "Incompleto"); if (incompletas != null) { pruebasIncompletas = true; } PruebasPorEstado exitosas = resultado.Find(x => x.estadoFinal == "Exitoso"); if (exitosas != null) { pruebasExitosas = true; } PruebasPorEstado fallidas = resultado.Find(x => x.estadoFinal == "Fallido"); if (fallidas != null) { pruebasFallidas = true; } } else if (resultado.Count() == 1) // Solo hay de un tipo { // Averiguar el estado de la unica prueba if (resultado.ElementAt(0).estadoFinal == "Exitoso") { pruebasExitosas = true; } else if (resultado.ElementAt(0).estadoFinal == "Fallido") { pruebasFallidas = true; } else { pruebasIncompletas = true; } } ViewBag.pruebasIncompletas = pruebasIncompletas; ViewBag.pruebasFallidas = pruebasFallidas; ViewBag.pruebasExitosas = pruebasExitosas; ViewBag.idProy = idpro; ViewBag.dificultad = rEQUERIMIENTOS.dificultad; ViewBag.estadoActual = rEQUERIMIENTOS.estado_actual; ViewBag.tester = rEQUERIMIENTOS.cedulaFK; ViewBag.testerDisp = testerDisp; ViewBag.nombrePK = rEQUERIMIENTOS.nombrePK; return(View(rEQUERIMIENTOS)); }