示例#1
0
        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));
        }
示例#2
0
        public ActionResult CrearSolicitud(CrearSolicitudModel modelo, HttpPostedFileBase ImageData)
        {
            if (ModelState.IsValid)                                                           // Verifica si el modelo que entra como parametro es valido para modificar
            {
                var requerimientoViejo = baseDatos.Requerimientos.Find(modelo.idReqAnterior); // Se busca el modelo en la base y se cambian sus datos por los
                var requerimiento      = new Requerimiento();
                requerimiento.nombre        = modelo.nombre;                                  // del modelo que entra como parametro
                requerimiento.codigo        = modelo.codigo;
                requerimiento.version       = requerimientoViejo.version + 1;
                requerimiento.creadoPor     = modelo.creadoPor;
                requerimiento.descripcion   = modelo.descripcion;
                requerimiento.solicitadoPor = modelo.solicitadoPor;
                requerimiento.prioridad     = Int32.Parse(modelo.prioridad);
                requerimiento.esfuerzo      = Int32.Parse(modelo.esfuerzo);
                requerimiento.creadoEn      = DateTime.ParseExact(modelo.fechaInicial, "MM/dd/yyyy", null);
                if (modelo.fechaFinal != null)
                {
                    requerimiento.finalizaEn = DateTime.ParseExact(modelo.fechaFinal, "MM/dd/yyyy", null);
                }
                requerimiento.estado        = modelo.estado;
                requerimiento.observaciones = modelo.observaciones;
                requerimiento.proyecto      = modelo.proyecto;
                requerimiento.Usuarios      = new List <Usuario>();
                baseDatos.SaveChanges();
                if (modelo.equipo != null)
                {
                    foreach (var desarrollador in modelo.equipo)
                    {
                        requerimiento.Usuarios.Add(baseDatos.Usuarios.Find(desarrollador));
                    }
                }

                if (ImageData != null)
                {
                    var array = new Byte[ImageData.ContentLength];
                    ImageData.InputStream.Position = 0;
                    ImageData.InputStream.Read(array, 0, ImageData.ContentLength);
                    requerimiento.imagen = array;
                }
                else
                {
                    if (modelo.file == "")
                    {
                        requerimiento.imagen = null;
                    }
                    else
                    {
                        requerimiento.imagen = Encoding.ASCII.GetBytes(modelo.file);
                    }
                }
                //Se hace el split para separar los criterios de aceptación y meterlos en una lista
                var criterios = modelo.criteriosAceptacion.Split('|').ToList();
                //Se crea la lista de criterios de aceptacion que puede ser expandible
                var criterio_list = new List <Requerimientos_Cri_Acep>();
                foreach (var criterio in criterios)
                {
                    var cri_ac = new Requerimientos_Cri_Acep();
                    cri_ac.criterio = criterio;
                    criterio_list.Add(cri_ac);
                }
                requerimiento.Requerimientos_Cri_Acep = criterio_list;
                requerimiento.categoria = "Solicitud";
                baseDatos.Requerimientos.Add(requerimiento);    // Con esta linea se notifica a la base que se hacen los cambios
                var solicitud = new Solicitud_Cambios();
                solicitud.razon        = modelo.razon;
                solicitud.req1         = requerimientoViejo.id;
                solicitud.req2         = requerimiento.id;
                solicitud.proyecto     = requerimiento.proyecto;
                solicitud.solicitadoEn = DateTime.Now;
                solicitud.tipo         = "Modificar";
                solicitud.estado       = "En revisión";
                String userID = System.Web.HttpContext.Current.User.Identity.GetUserId();
                solicitud.solicitadoPor = baseDatos.Usuarios.Where(m => m.id == userID).First().cedula;
                baseDatos.Solicitud_Cambios.Add(solicitud);
                baseDatos.SaveChanges();                                                                                                                               // Se guardan los cambios en la base
                this.AddToastMessage("Solicitud de Cambio Creada", "La solicitud de modificar " + modelo.nombre + " se ha enviado correctamente.", ToastType.Success); // Se muestra un mensaje de confirmacion
                return(RedirectToAction("index", "Requerimientos", new { proyecto = requerimiento.proyecto }));                                                        // Se carga el requerimiento modificado en la pantalla
            }

            List <Usuario> listaDesarrolladores = new List <Usuario>();
            List <Usuario> listaClientes        = new List <Usuario>();
            string         clienteRol           = context.Roles.Where(m => m.Name == "Cliente").First().Id;
            string         desarrolladorRol     = context.Roles.Where(m => m.Name == "Desarrollador").First().Id;

            foreach (var user in context.Users.ToArray())                   // En esta seccion se cargan las listas que despliegan los
            {                                                               // desarrolladores y usuarios relacionados con el requerimiento
                if (user.Roles.First().RoleId.Equals(clienteRol))           // para modificarlos
                {
                    listaClientes.Add(baseDatos.Usuarios.Where(m => m.id == user.Id).First());
                }
                else
                {
                    if (user.Roles.First().RoleId.Equals(desarrolladorRol))
                    {
                        listaDesarrolladores.Add(baseDatos.Usuarios.Where(m => m.id == user.Id).First());
                    }
                }
            }
            ViewBag.Desarrolladores     = new SelectList(listaDesarrolladores, "cedula", "nombre"); // Se hacen unas validaciones de permisos y se
            ViewBag.Clientes            = new SelectList(listaClientes, "cedula", "nombre");        // cargan los Viewbags necesitados en la vista
            ViewBag.DesarrolladoresDisp = listaDesarrolladores;
            ViewBag.Estados             = new SelectList(baseDatos.Estado_Proyecto.ToList(), "nombre", "nombre");
            return(View(modelo));    // Se retorna la vista al modelo luego de modificar los datos
        }