public ActionResult Rechazar(AprobarSolicitudCambioModelo model) { if (ModelState.IsValid) { var solicitud = new Solicitud_Cambios(); var req1 = baseDatos.Requerimientos.Find(solicitud.req1); var req2 = baseDatos.Requerimientos.Find(solicitud.req2); req1.categoria = "Actual"; req2.categoria = "Rechazada"; solicitud.Estado_Solicitud.nombre = "Rechazado"; String userIdentityId = System.Web.HttpContext.Current.User.Identity.GetUserId(); String usuarioActual = baseDatos.Usuarios.Where(m => m.id == userIdentityId).First().cedula; solicitud.aprobadoPor = usuarioActual; solicitud.aprobadoEn = DateTime.Now; } return(View(model)); }
/// <summary> /// Funcionalidad para llenar los datos del requerimiento actual y la solicitud de cambio del requerimiento. /// </summary> // GET: /Solicitud_Cambios/Aprobar public ActionResult Aprobar(string id) { /*if (!revisarPermisos("Aprobar Solicitud de Cambio")) // Revisa los permisos del usuario accediendo a la pantalla * { * //Despliega mensaje en caso de no poder modificar un requerimiento * this.AddToastMessage("Acceso Denegado", "No tienes permiso para ver detalles de requerimientos!", ToastType.Warning); * return RedirectToAction("Index", "Home"); * }*/ if (id == null) // Si no existe el requerimiento, redirecciona a error { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } AprobarSolicitudCambioModelo modelo = new AprobarSolicitudCambioModelo(); // Crea un modelo y lo llena con los datos del requerimiento var solicitud = baseDatos.Solicitud_Cambios.Find(Int32.Parse(id)); // que entro como parametro if (solicitud == null) { return(HttpNotFound()); } var req1 = baseDatos.Requerimientos.Find(solicitud.req1); var req2 = baseDatos.Requerimientos.Find(solicitud.req2); modelo.id1 = req1.id; // Diferentes asignaciones de variables para el modelo creado modelo.id2 = req2.id; modelo.codigo1 = req1.codigo; modelo.codigo2 = req2.codigo; modelo.nombre1 = req1.nombre; modelo.nombre2 = req2.nombre; modelo.creadoPor1 = baseDatos.Usuarios.Find(req1.creadoPor).nombre; modelo.creadoPor2 = req2.creadoPor; modelo.version1 = req1.version.ToString(); modelo.version2 = req2.version.ToString(); modelo.descripcion1 = req1.descripcion; modelo.descripcion2 = req2.descripcion; modelo.prioridad1 = req1.prioridad.ToString(); modelo.prioridad2 = req2.prioridad.ToString(); modelo.esfuerzo1 = req1.esfuerzo.ToString(); modelo.esfuerzo2 = req2.esfuerzo.ToString(); modelo.observaciones1 = req1.observaciones; modelo.observaciones2 = req2.observaciones; modelo.fechaInicial1 = req1.creadoEn.ToString("MM/dd/yyyy"); modelo.fechaInicial2 = req2.creadoEn.ToString("MM/dd/yyyy"); if (req1.finalizaEn != null) { modelo.fechaFinal1 = (req1.finalizaEn ?? DateTime.Now).ToString("MM/dd/yyyy"); } if (req2.finalizaEn != null) { modelo.fechaFinal2 = (req2.finalizaEn ?? DateTime.Now).ToString("MM/dd/yyyy"); } modelo.solicitadoPor1 = baseDatos.Usuarios.Find(req1.solicitadoPor).nombre; modelo.solicitadoPor2 = req2.solicitadoPor; modelo.estado1 = req1.estado; modelo.estado2 = req2.estado; modelo.proyecto = req1.proyecto; modelo.solicitadoEn = req2.creadoEn.ToString("MM/dd/yyyy"); modelo.solicitadoPor = baseDatos.Usuarios.Find(solicitud.solicitadoPor).nombre; modelo.razon = solicitud.razon; modelo.comentario = solicitud.comentario; if (req1.imagen != null) { modelo.file1 = HttpUtility.UrlEncode(Convert.ToBase64String(req1.imagen)); } else { modelo.file1 = ""; } if (req2.imagen != null) { modelo.file2 = HttpUtility.UrlEncode(Convert.ToBase64String(req2.imagen)); } else { modelo.file2 = ""; } modelo.equipo1 = new List <string>(); // Se llena la variable equipo con el equipo ya asignado a este requerimiento, si ya hay uno foreach (var des in req1.Usuarios.ToList()) { modelo.equipo1.Add(des.cedula); } modelo.equipo2 = new List <string>(); // Se llena la variable equipo con el equipo ya asignado a este requerimiento, si ya hay uno foreach (var des in req2.Usuarios.ToList()) { modelo.equipo2.Add(des.cedula); } modelo.criteriosAceptacion1 = req1.Requerimientos_Cri_Acep.Select(c => c.criterio).Aggregate((acc, x) => acc + "|" + x); // Se agrega a la lista de criterios de aceptacion modelo.criteriosAceptacion2 = req2.Requerimientos_Cri_Acep.Select(c => c.criterio).Aggregate((acc, x) => acc + "|" + x); List <Usuario> listaDesarrolladores = new List <Usuario>(); // Se inicializan listas que se usan a traves a continuacion List <Modulo> listaModulos = new List <Modulo>(); List <Estado_Requerimientos> listaEstadoRequerimientos = new List <Estado_Requerimientos>(); List <Usuario> listaClientes = new List <Usuario>(); string clienteRol = context.Roles.Where(m => m.Name == "Cliente").First().Id; //Requerido para formar el equipo de trabajo foreach (var proyEquipo in baseDatos.Proyectos.Find(req1.proyecto).Proyecto_Equipo) { listaDesarrolladores.Add(baseDatos.Usuarios.Find(proyEquipo.usuario)); } foreach (var user in context.Users.ToArray()) { if (user.Roles.First().RoleId.Equals(clienteRol)) { listaClientes.Add(baseDatos.Usuarios.Where(m => m.id == user.Id).First()); } } ViewBag.eliminarRequerimiento = revisarPermisos("Eliminar Requerimientos"); // Aqui se hacen unas validaciones de permisos ViewBag.modificarRequerimiento = revisarPermisos("Modificar Requerimientos"); // y se cargan ciertos Viewbags necesitados por la vista ViewBag.Desarrolladores = new SelectList(listaDesarrolladores, "cedula", "nombre"); ViewBag.Clientes = new SelectList(listaClientes, "cedula", "nombre"); ViewBag.DesarrolladoresDisp = listaDesarrolladores; ViewBag.Estados = new SelectList(baseDatos.Estado_Proyecto.ToList(), "nombre", "nombre"); return(View(modelo)); // Se retorna la vista al modelo luego de cargar los datos }