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)); }
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 }
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 }