// GET: REQUERIMIENTOS/Delete/5
        public async Task <ActionResult> Delete(string id, string idpro)
        {
            string user = User.Identity.Name;
            string rol  = await this.seguridad_controller.GetRol(user);

            ViewBag.rol = rol;
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            REQUERIMIENTOS rEQUERIMIENTOS = db.REQUERIMIENTOS.Find(idpro, id);

            if (rEQUERIMIENTOS == null)
            {
                return(HttpNotFound());
            }
            return(View(rEQUERIMIENTOS));
        }
        public ActionResult Create([Bind(Include = "idFK,nombrePK,fechaInicio,fechaEntrega,horasReales,dificultad,cedulaFK,horasEstimadas,Descripcion,estado_actual,estado_final,descripcion_resultado")] REQUERIMIENTOS rEQUERIMIENTOS)
        {
            if (ModelState.IsValid)

            {
                if (Request.Form["Testers"] != "")
                {
                    rEQUERIMIENTOS.cedulaFK = Request.Form["Testers"].ToString();
                    db.REQUERIMIENTOS.Add(rEQUERIMIENTOS);
                    db.SaveChanges();
                    String queryAgregarAHistorial = "exec agregar_Historial_Req" + "'" + rEQUERIMIENTOS.idFK + "'," + "'" + rEQUERIMIENTOS.nombrePK + "'," + "'" + rEQUERIMIENTOS.cedulaFK + "'";
                    db.Database.SqlQuery <EquipoModel>(queryAgregarAHistorial).ToList();
                }
                else
                {
                    db.REQUERIMIENTOS.Add(rEQUERIMIENTOS);
                    db.SaveChanges();
                }
                return(RedirectToAction("../REQUERIMIENTOS/Index", new { id = rEQUERIMIENTOS.idFK }));
            }
            List <SelectListItem> testerDisp = new List <SelectListItem>();
            // Datos para desplegar miembros de equipo disponibles
            string queryTesterDisp = "Exec recuperar_tester_disponible" + "'" + rEQUERIMIENTOS.idFK + "'";
            // 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
                });
            }
            ViewBag.testerDisp = testerDisp;

            return(View(rEQUERIMIENTOS));
        }
Ejemplo n.º 3
0
 /* EFECTO: Requerimiento antiguo
  * REQUIERE: Que el estado sea Aprobado
  * MODIFICA: El requerimiento que será el nuevo aprobado y el anterior  */
 public /*ActionResult*/ void AceptarSolicitud(CambiosViewModel modelo, REQUERIMIENTOS antiguo, REQUERIMIENTOS nuevo, CAMBIOS cambio /*, CAMBIOS actual*/)
 {
     if (modelo.propuesto.ESTADO_CAMBIOS == "Aprobado")
     {
         //antiguo.ESTADO_CAMBIOS = "Obsoleto";
         REQUERIMIENTOS pivote = nuevo;
         nuevo   = antiguo;
         antiguo = pivote;
         nuevo.ESTADO_CAMBIOS = "Obsoleto";
         cambio.VIEJO_REQ_ID  = cambio.NUEVO_REQ_ID;
         cambio.VIEJO_VER_ID  = cambio.NUEVO_VER_ID;
         modelo.vigente       = antiguo;
         //modelo.propuesto.ESTADO_CAMBIOS = modelo.propuesto.ESTADO_CAMBIOS;
         //actual = cambio;
     }
     //return modelo;
 }
Ejemplo n.º 4
0
        public ActionResult DetallesSolicitud(CambiosViewModel modelo)
        {
            if (modelo == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            REQUERIMIENTOS cambioActualizado = db.REQUERIMIENTOS.Find(modelo.propuesto.ID, modelo.propuesto.VERSION_ID);
            REQUERIMIENTOS reqAntiguo        = db.REQUERIMIENTOS.Find(modelo.actual.ID, modelo.actual.VERSION_ID);

            cambioActualizado.NOMBRE      = modelo.propuesto.NOMBRE;
            cambioActualizado.DESCRIPCION = modelo.propuesto.DESCRIPCION;
            cambioActualizado.ENCARGADO   = modelo.propuesto.ENCARGADO;
            cambioActualizado.ESFUERZO    = modelo.propuesto.ESFUERZO;
            cambioActualizado.ESTADO      = modelo.propuesto.ESTADO;
            cambioActualizado.FECHAFINAL  = modelo.propuesto.FECHAFINAL;
            cambioActualizado.FECHAINCIO  = modelo.propuesto.FECHAINCIO;
            //cambioActualizado.IMAGEN = modelo.propuesto.IMAGEN;
            //cambioActualizado.rutaImagen = modelo.propuesto.rutaImagen;
            //cambioActualizado.CRIT_ACEPTACION = modelo.propuesto.CRIT_ACEPTACION;
            cambioActualizado.MODULO        = modelo.propuesto.MODULO;
            cambioActualizado.OBSERVACIONES = modelo.propuesto.OBSERVACIONES;
            cambioActualizado.PRIORIDAD     = modelo.propuesto.PRIORIDAD;
            //cambioActualizado.PROYECTO = modelo.propuesto.PROYECTO;
            //cambioActualizado.PRYCTOID = modelo.propuesto.PRYCTOID;
            cambioActualizado.SPRINT = modelo.propuesto.SPRINT;
            //cambioActualizado.USUARIOS = modelo.propuesto.USUARIOS;
            //cambioActualizado.VERSION_ID = modelo.propuesto.VERSION_ID;

            var fg = new AspNetUsers();                 //instancia AspNetUser para usuario actual

            var listauser = db.AspNetUsers.ToArray();

            for (int i = 0; i < listauser.Length; i++)
            {                           //de todos los AspNetUser del sistema, encuentra el usuario activo actualmente
                if (listauser[i].Email == User.Identity.Name)
                {
                    fg = listauser[i];                  //obtiene el AspNetUser actual
                }
            }

            var usuario = db.USUARIOS.Where(u => u.ID_ASP.Equals(fg.Id)).Single();

            CAMBIOS cambio = db.CAMBIOS.Find(modelo.solicitud.ID);

            cambio.DESCRIPCION   = modelo.solicitud.DESCRIPCION;
            cambio.FECHA         = DateTime.Now;
            cambio.JUSTIFICACION = modelo.solicitud.JUSTIFICACION;

            if ((cambioActualizado.ESTADO_CAMBIOS != modelo.propuesto.ESTADO_CAMBIOS) || (modelo.propuesto.ESTADO_CAMBIOS == "En revisión"))
            {
                cambio.CED_REV = usuario.CEDULA;
                if (modelo.solicitud.FECHA_REV == null)
                {
                    cambio.FECHA_REV = DateTime.Now;
                }
                else
                {
                    cambio.FECHA_REV = modelo.solicitud.FECHA_REV;
                }
                cambio.JUST_REV = modelo.solicitud.JUST_REV;
                AceptarSolicitud(modelo, reqAntiguo, cambioActualizado, cambio);
            }

            cambioActualizado.ESTADO_CAMBIOS = modelo.propuesto.ESTADO_CAMBIOS;
            //if (ModelState.IsValid)
            //{
            db.Entry(reqAntiguo).State        = EntityState.Modified;
            db.Entry(cambioActualizado).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("DetallesSolicitud", new { ID = modelo.solicitud.ID }));
            //}
            //return null;
        }
        public ActionResult Edit(string nombrePK, string idProy, string dificultadAnterior, string estadoAnterior, string testerAnterior, [Bind(Include = "idFK,nombrePK,Descripcion,fechaInicio,fechaEntrega,horasReales,horasEstimadas,dificultad,cedulaFK,estado_final,descripcion_resultado")] REQUERIMIENTOS rEQUERIMIENTOS)
        {
            if (ModelState.IsValid)
            {
                rEQUERIMIENTOS.nombrePK = nombrePK;
                rEQUERIMIENTOS.idFK     = idProy;
                if (Request.Form["estado"] == null) // No se selecciono ningun estado actual
                {
                    rEQUERIMIENTOS.estado_actual = estadoAnterior;
                }
                else // Se selecciono una opcion de estado
                {
                    rEQUERIMIENTOS.estado_actual = Request.Form["estado"].ToString();
                }

                if (Request.Form["dificultad"] == null) // No se selecciono ninguna dificultad
                {
                    rEQUERIMIENTOS.dificultad = dificultadAnterior;
                }
                else // Se selecciono una opcion de dificultad
                {
                    rEQUERIMIENTOS.estado_actual = Request.Form["dificultad"].ToString();
                }


                if (Request.Form["Testers"] == "") // No se selecciono ningun tester
                {
                    rEQUERIMIENTOS.cedulaFK = testerAnterior;
                }
                else // Se selecciono un campo del dropdown
                {
                    rEQUERIMIENTOS.cedulaFK = Request.Form["Testers"].ToString(); // Selecciona la cedula del tester seleccionado en el dropdown
                    if (rEQUERIMIENTOS.cedulaFK != "No asignado")
                    {
                        String queryAgregarAHistorial = "exec agregar_Historial_Req" + "'" + idProy + "'," + "'" + nombrePK + "'," + "'" + rEQUERIMIENTOS.cedulaFK + "'";
                        db.Database.SqlQuery <EquipoModel>(queryAgregarAHistorial).ToList(); // Se ejecuta query de agregar a historial
                    }
                    else
                    {
                        rEQUERIMIENTOS.cedulaFK = null;
                    }
                }

                db.Entry(rEQUERIMIENTOS).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("../REQUERIMIENTOS/Index", new { id = rEQUERIMIENTOS.idFK }));
            }

            return(View(rEQUERIMIENTOS));
        }
        // 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));
        }
        //Botón que cancela en el Modificar y devuelve a la pantalla anterior.

        /*EFE: Se sale del modificar y revierte cambios
         * REQ:
         * MOD: Nada */
        public ActionResult cancelar(REQUERIMIENTOS REQ)
        {
            return(View(REQ));
        }