Example #1
0
        /// <summary>
        /// Funcionalidad para crear Requerimientos.
        /// </summary>
        /// <returns>Pagina de Index</returns>
        // GET: /Requerimientos/Crear
        public ActionResult Crear(string proyecto)
        {
            if (!revisarPermisos("Crear Requerimientos"))
            {
                //despliega mensaje en caso de no poder crear un requerimiento
                this.AddToastMessage("Acceso Denegado", "No tienes permiso para crear requerimientos!", ToastType.Warning);
                return(RedirectToAction("Index", "Home"));
            }
            //Solo se permite crear cuando tiene un proyecto asignado
            if (String.IsNullOrEmpty(proyecto))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RequerimientosModelo model = new RequerimientosModelo();

            model.proyecto = proyecto;
            //Requerido para cargar la lista de desarrolladores
            List <Usuario> listaDesarrolladores = new List <Usuario>();
            //Requerido para cargar la lista de clientes
            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(model.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.Desarrolladores     = new SelectList(listaDesarrolladores, "cedula", "nombre");
            ViewBag.Clientes            = new SelectList(listaClientes, "cedula", "nombre");
            ViewBag.DesarrolladoresDisp = listaDesarrolladores;
            ViewBag.EstadoRequerimiento = new SelectList(baseDatos.Estado_Requerimientos.ToList(), "nombre", "nombre");
            return(View(model));
        }
Example #2
0
        public ActionResult Borrar(RequerimientosModelo modelo)
        {
            var    requerimiento = baseDatos.Requerimientos.Find(modelo.id);
            String proyecto      = requerimiento.proyecto;
            var    criterios     = requerimiento.Requerimientos_Cri_Acep.ToList();

            for (int i = criterios.Count - 1; i >= 0; i--)
            {
                criterios.RemoveAt(i);
            }

            var equipo = requerimiento.Usuarios;

            foreach (var usuario in equipo.ToList())
            {
                requerimiento.Usuarios.Remove(usuario);
            }

            baseDatos.Entry(requerimiento).State = System.Data.Entity.EntityState.Deleted;
            baseDatos.SaveChanges();

            this.AddToastMessage("Requerimiento Borrado", "El requerimiento " + modelo.nombre + " se ha borrado correctamente.", ToastType.Success);
            return(RedirectToAction("Index", "Requerimientos", new { proyecto = proyecto }));
        }
Example #3
0
        public ActionResult Detalles(RequerimientosModelo modelo, HttpPostedFileBase ImageData)
        {
            if (ModelState.IsValid)                                           // Verifica si el modelo que entra como parametro es valido para modificar
            {
                var requerimiento = baseDatos.Requerimientos.Find(modelo.id); // Se busca el modelo en la base y se cambian sus datos por los
                requerimiento.nombre        = modelo.nombre;                  // del modelo que entra como parametro
                requerimiento.codigo        = modelo.codigo;
                requerimiento.version       = Int32.Parse(modelo.version);
                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;
                    }
                }

                var reqcriacs = baseDatos.Requerimientos.Find(modelo.id).Requerimientos_Cri_Acep.ToList();

                foreach (var reqcriac in reqcriacs)
                {
                    baseDatos.Entry(reqcriac).State = System.Data.Entity.EntityState.Deleted;
                }
                //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;

                baseDatos.Entry(requerimiento).State = System.Data.Entity.EntityState.Modified; // Con esta linea se notifica a la base que se hacen los cambios
                baseDatos.SaveChanges();                                                        // Se guardan los cambios en la base


                if (requerimiento.Modulo1 != null)
                {
                    var sprint_modulo = baseDatos.Requerimientos.Find(modelo.id).Modulo1.Sprint_Modulos;

                    if (sprint_modulo != null)
                    {
                        var sprints = sprint_modulo.Select(x => x.sprint);
                        if (sprints != null)
                        {
                            foreach (var sprint in sprints)
                            {
                                updateSprintPoints(modelo.proyecto, sprint);
                            }
                        }
                    }
                }


                /*var sprints = baseDatos.Requerimientos.Find(modelo.id).Modulo1.Sprint_Modulos.Select(x => x.sprint);
                 * foreach(var sprint in sprints)
                 * {
                 *  updateSprintPoints(modelo.proyecto, sprint);
                 * }*/
                this.AddToastMessage("Requerimiento Modificado", "El requerimiento " + modelo.nombre + " se ha modificado correctamente.", ToastType.Success); // Se muestra un mensaje de confirmacion
                return(RedirectToAction("Detalles", "Requerimientos", new { id = requerimiento.id }));                                                         // 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
        }
Example #4
0
        /// <summary>
        /// Funcionalidad para consultar los detalles de los requerimientos con base en un id.
        /// </summary>
        /// <returns>Pagina de Index</returns>
        // GET: /Requerimientos/Detalles
        // GET: Detalles
        public ActionResult Detalles(int id)
        {
            if (!revisarPermisos("Consultar Detalles de Requerimiento"))   // 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));
            }
            RequerimientosModelo modelo = new RequerimientosModelo();   // Crea un modelo y lo llena con los datos del requerimiento

            modelo.requerimiento = baseDatos.Requerimientos.Find(id);   // que entro como parametro
            if (modelo.requerimiento.id == null)
            {
                return(HttpNotFound());
            }
            modelo.id            = modelo.requerimiento.id;  // Diferentes asignaciones de variables para el modelo creado
            modelo.codigo        = modelo.requerimiento.codigo;
            modelo.nombre        = modelo.requerimiento.nombre;
            modelo.creadoPor     = modelo.requerimiento.creadoPor;
            modelo.version       = modelo.requerimiento.version.ToString();
            modelo.descripcion   = modelo.requerimiento.descripcion;
            modelo.prioridad     = modelo.requerimiento.prioridad.ToString();
            modelo.esfuerzo      = modelo.requerimiento.esfuerzo.ToString();
            modelo.observaciones = modelo.requerimiento.observaciones;
            modelo.fechaInicial  = modelo.requerimiento.creadoEn.ToString("MM/dd/yyyy");
            if (modelo.requerimiento.finalizaEn != null)
            {
                modelo.fechaFinal = (modelo.requerimiento.finalizaEn ?? DateTime.Now).ToString("MM/dd/yyyy");
            }
            modelo.solicitadoPor = modelo.requerimiento.solicitadoPor;
            modelo.estado        = modelo.requerimiento.estado;
            modelo.proyecto      = modelo.requerimiento.proyecto;
            var requerimiento = baseDatos.Requerimientos.Find(id);  // Se crea una variable requerimiento con el id del requerimiento llamado

            modelo.requerimiento = requerimiento;

            if (modelo.requerimiento.imagen != null)
            {
                modelo.file = HttpUtility.UrlEncode(Convert.ToBase64String(modelo.requerimiento.imagen));
            }
            else
            {
                modelo.file = "";
            }

            modelo.equipo = new List <string>();     // Se llena la variable equipo con el equipo ya asignado a este requerimiento, si ya hay uno
            foreach (var des in modelo.requerimiento.Usuarios.ToList())
            {
                modelo.equipo.Add(des.cedula);
            }

            modelo.criteriosAceptacion = requerimiento.Requerimientos_Cri_Acep.Select(c => c.criterio).Aggregate((acc, x) => acc + "|" + x); // Se agrega a la lista de criterios de aceptacion
                                                                                                                                             // los que ya estan vinculados con este requerimiento
            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(modelo.requerimiento.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());
                }
            }



            modelo.eliminarRequerimiento  = revisarPermisos("Eliminar Requerimientos");             // Aqui se hacen unas validaciones de permisos
            modelo.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_Requerimientos.ToList(), "nombre", "nombre");
            return(View(modelo));        // Se retorna la vista al modelo luego de cargar los datos
        }
Example #5
0
        public ActionResult Crear(RequerimientosModelo model, HttpPostedFileBase ImageData)
        {
            if (ModelState.IsValid)
            {
                //Crea el requerimiento en la tabla Requerimientos
                var requerimiento = new Requerimiento();
                //Se llenan todos los atributos del requerimiento
                requerimiento.codigo      = model.codigo;
                requerimiento.nombre      = model.nombre;
                requerimiento.descripcion = model.descripcion;
                requerimiento.prioridad   = Int32.Parse(model.prioridad);
                requerimiento.esfuerzo    = Int32.Parse(model.esfuerzo);
                requerimiento.creadoEn    = DateTime.ParseExact(model.fechaInicial, "MM/dd/yyyy", CultureInfo.InvariantCulture);
                if (model.fechaFinal != null)
                {
                    requerimiento.finalizaEn = DateTime.ParseExact(model.fechaFinal, "MM/dd/yyyy", CultureInfo.InvariantCulture);
                }
                requerimiento.observaciones = model.observaciones;
                requerimiento.solicitadoPor = model.solicitadoPor;
                requerimiento.creadoPor     = model.creadoPor;
                requerimiento.estado        = model.estado;
                requerimiento.proyecto      = model.proyecto;
                requerimiento.version       = 1;
                requerimiento.categoria     = "Actual";
                requerimiento.Usuarios      = model.equipo.Select(x => baseDatos.Usuarios.Find(x)).ToList();

                if (ImageData != null)
                {
                    var array = new Byte[ImageData.ContentLength];
                    ImageData.InputStream.Position = 0;
                    ImageData.InputStream.Read(array, 0, ImageData.ContentLength);

                    requerimiento.imagen = array;
                }
                else
                {
                    requerimiento.imagen = null;
                }

                //Se hace el split para separar los criterios de aceptación y meterlos en una lista
                var criterios = model.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;
                baseDatos.Requerimientos.Add(requerimiento);

                //Se guardan los datos en la base de datos
                baseDatos.SaveChanges();
                //Se muestra el mensaje de que el requerimiento fue creado correctamente
                this.AddToastMessage("Requerimiento Creado", "El requerimiento " + model.nombre + " se ha creado correctamente.", ToastType.Success);
                //Se devuelve a la pagina de crear para seguir creando requerimientos
                return(RedirectToAction("Crear", "Requerimientos", new { proyecto = model.proyecto }));
            }
            List <Usuario> listaDesarrolladores = new List <Usuario>();
            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(model.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.Desarrolladores     = new SelectList(listaDesarrolladores, "cedula", "nombre");
            ViewBag.Clientes            = new SelectList(listaClientes, "cedula", "nombre");
            ViewBag.DesarrolladoresDisp = listaDesarrolladores;
            var listaModulos = baseDatos.Modulos.Where(m => m.proyecto == model.proyecto).ToList();

            ViewBag.Modulo = new SelectList(listaModulos, "numero", "nombre");
            ViewBag.EstadoRequerimiento = new SelectList(baseDatos.Estado_Requerimientos.ToList(), "nombre", "nombre");

            return(View(model));
        }