/// <summary> /// Devuelve los detalles y permite un proyecto. /// </summary> /// <returns>Pagina de detalles</returns> // GET: Detalles public ActionResult Detalles(string id) { if (!revisarPermisos("Consultar Detalles de Proyectos")) { //Despliega mensaje en caso de no poder modificar un proyecto this.AddToastMessage("Acceso Denegado", "No tienes permiso para ver detalles de proyectos!", ToastType.Warning); return(RedirectToAction("Index", "Home")); } if (String.IsNullOrEmpty(id)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //cargar los atributos al modelo ModificarProyectoModel model = new ModificarProyectoModel(); var proyecto = baseDatos.Proyectos.Find(id); model.cliente = baseDatos.Usuarios.Find(proyecto.cliente); model.lider = baseDatos.Usuarios.Find(proyecto.lider); model.descripcion = proyecto.descripcion; model.fechaInicio = (proyecto.fechaInicio).ToString("MM/dd/yyyy"); model.fechaFinal = (proyecto.fechaFinal).ToString("MM/dd/yyyy"); model.nombre = proyecto.nombre; model.estado = proyecto.estado; var equipo = proyecto.Proyecto_Equipo.ToList(); model.equipo = new List <string>(); foreach (var des in equipo) { model.equipo.Add(des.usuario); } //llenar las listas para el combobox 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()) { if (user.Roles.First().RoleId.Equals(clienteRol)) { 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()); } } } //model.eliminarPermitido = (revisarPermisos("Eliminar Proyectos") && (model.estado == "Por iniciar") && (baseDatos.Requerimientos.Where(m => m.proyecto == id).Count() == 0) && (baseDatos.Sprints.Where(m => m.proyecto == id).Count() == 0) && (baseDatos.Modulos.Where(m => m.proyecto == id).Count() == 0)); model.eliminarPermitido = revisarPermisos("Eliminar Proyectos"); model.modificarProyecto = revisarPermisos("Modificar Proyectos"); 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(model)); }
public ActionResult Borrar(ModificarProyectoModel model) { var proyecto = baseDatos.Proyectos.Find(model.nombre); foreach (var userProyecto in proyecto.Proyecto_Equipo.ToList()) { baseDatos.Entry(userProyecto).State = System.Data.Entity.EntityState.Deleted; } baseDatos.Entry(proyecto).State = System.Data.Entity.EntityState.Deleted; baseDatos.SaveChanges(); this.AddToastMessage("Proyecto Borrado", "El proyecto " + proyecto.nombre + " se ha borrado correctamente.", ToastType.Success); return(RedirectToAction("Index", "Proyectos")); }
public ActionResult Detalles(ModificarProyectoModel model) { if (ModelState.IsValid) { // cargar atributos del modelo var proyecto = new Proyecto(); proyecto.cliente = model.cliente.cedula; proyecto.lider = model.lider.cedula; proyecto.fechaInicio = DateTime.ParseExact(model.fechaInicio, "MM/dd/yyyy", CultureInfo.InvariantCulture); proyecto.fechaFinal = DateTime.ParseExact(model.fechaFinal, "MM/dd/yyyy", CultureInfo.InvariantCulture); proyecto.descripcion = model.descripcion; proyecto.nombre = model.nombre; proyecto.estado = model.estado; proyecto.duracion = (proyecto.fechaFinal).Subtract(proyecto.fechaInicio).Days; baseDatos.Entry(proyecto).State = System.Data.Entity.EntityState.Modified; var equipo_viejo = baseDatos.Proyecto_Equipo.Where(m => m.proyecto == model.nombre).ToList(); // eliminar las entradas del equipo viejo foreach (var usuario in equipo_viejo) { baseDatos.Entry(usuario).State = System.Data.Entity.EntityState.Deleted; } // crear las entradas para el equipo nuevo if (model.equipo != null) { foreach (var desarrollador in model.equipo) { var proyectoDesarrollador = new Proyecto_Equipo(); proyectoDesarrollador.usuario = desarrollador; proyectoDesarrollador.proyecto = proyecto.nombre; baseDatos.Proyecto_Equipo.Add(proyectoDesarrollador); } var checkLider = model.equipo.Where(m => m == proyecto.lider); if (checkLider.Count() == 0) { var proyectoDesarrollador = new Proyecto_Equipo(); proyectoDesarrollador.usuario = proyecto.lider; proyectoDesarrollador.proyecto = proyecto.nombre; baseDatos.Proyecto_Equipo.Add(proyectoDesarrollador); } } else { var proyectoDesarrollador = new Proyecto_Equipo(); proyectoDesarrollador.usuario = proyecto.lider; proyectoDesarrollador.proyecto = proyecto.nombre; baseDatos.Proyecto_Equipo.Add(proyectoDesarrollador); } baseDatos.SaveChanges(); this.AddToastMessage("Proyecto Modificado", "El proyecto " + model.nombre + " se ha modificado correctamente.", ToastType.Success); return(RedirectToAction("Detalles", "Proyectos", new { id = proyecto.nombre })); } // si el modelo no es valido volver a cargar las listas: 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()) { if (user.Roles.First().RoleId.Equals(clienteRol)) { 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"); ViewBag.Clientes = new SelectList(listaClientes, "cedula", "nombre"); ViewBag.DesarrolladoresDisp = listaDesarrolladores; ViewBag.Estados = new SelectList(baseDatos.Estado_Proyecto.ToList(), "nombre", "nombre"); return(View(model)); }