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)); }
public ActionResult Crear(ProyectosModelo model) { if (ModelState.IsValid) { 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 = "Por iniciar"; proyecto.duracion = proyecto.fechaFinal.Subtract(proyecto.fechaInicio).Days; baseDatos.Proyectos.Add(proyecto); if ((model.equipo != null) && (model.equipo.Count() > 0)) { 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 Creado", "El proyecto " + model.nombre + " se ha creado correctamente.", ToastType.Success); return(RedirectToAction("Crear", "Proyectos")); } 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; return(View(model)); }