Пример #1
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));
        }
Пример #2
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
        }
Пример #3
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
        }