Ejemplo n.º 1
0
        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));
        }