public ActionResult Edit(Proyecto proyecto, int? areaId, int? tipoId) { if (ModelState.IsValid) { Proyecto tmp_proyecto = db.Proyectos.Find(proyecto.ID); List<int> tempIdList = new List<int>(); // Equipo db.Entry(tmp_proyecto).Collection(item => item.Equipo).Load(); tempIdList = proyecto.Equipo.Select(q => q.ID).ToList(); var delEquipo = tmp_proyecto.Equipo.Where(q => !tempIdList.Contains(q.ID)).ToList(); foreach (var equipo in delEquipo) { //tmp_proyecto.Hitos.Remove(hito); db.Entry(equipo).State = EntityState.Deleted; } foreach (var equipo in tmp_proyecto.Equipo) { db.Entry(equipo).CurrentValues.SetValues(proyecto.Equipo.Where(item => item.ID == equipo.ID).First()); db.Entry(equipo).State = EntityState.Modified; } tempIdList = tmp_proyecto.Equipo.Select(q => q.ID).ToList(); var addEquipo = proyecto.Equipo.Where(q => !tempIdList.Contains(q.ID)); foreach (var equipo in addEquipo) { equipo.Proyecto = tmp_proyecto; tmp_proyecto.Equipo.Add(equipo); } // Hitos db.Entry(tmp_proyecto).Collection(item => item.Hitos).Load(); tempIdList = proyecto.Hitos.Select(q => q.ID).ToList(); var delHitos = tmp_proyecto.Hitos.Where(q => !tempIdList.Contains(q.ID)).ToList(); foreach (var hito in delHitos) { //tmp_proyecto.Hitos.Remove(hito); db.Entry(hito).State = EntityState.Deleted; } foreach (var hito in tmp_proyecto.Hitos) { db.Entry(hito).CurrentValues.SetValues(proyecto.Hitos.Where(item => item.ID == hito.ID).First()); db.Entry(hito).State = EntityState.Modified; } tempIdList = tmp_proyecto.Hitos.Select(q => q.ID).ToList(); var addHitos = proyecto.Hitos.Where(q => !tempIdList.Contains(q.ID)); foreach (var hito in addHitos) { hito.Proyecto = tmp_proyecto; tmp_proyecto.Hitos.Add(hito); } // Presupuesto db.Entry(tmp_proyecto).Collection(item => item.Presupuesto).Load(); tempIdList = proyecto.Presupuesto.Select(q => q.ID).ToList(); var delPres = tmp_proyecto.Presupuesto.Where(q => !tempIdList.Contains(q.ID)).ToList(); foreach (var item in delPres) { //tmp_proyecto.Presupuesto.Remove(item); db.Entry(item).State = EntityState.Deleted; } foreach (var item in tmp_proyecto.Presupuesto) { db.Entry(item).CurrentValues.SetValues(proyecto.Presupuesto.Where(i => i.ID == item.ID).First()); db.Entry(item).State = EntityState.Modified; } tempIdList = tmp_proyecto.Presupuesto.Select(q => q.ID).ToList(); var addPres = proyecto.Presupuesto.Where(q => !tempIdList.Contains(q.ID)); foreach (var item in addPres) { item.Proyecto = tmp_proyecto; tmp_proyecto.Presupuesto.Add(item); } // Resumen Ejecutivo db.Entry(tmp_proyecto).Collection(item => item.ResumenEjecutivo).Load(); tempIdList = proyecto.ResumenEjecutivo.Select(q => q.ID).ToList(); //var delRes = tmp_proyecto.ResumenEjecutivo.Where(q => !tempIdList.Contains(q.ID)).ToList(); var delRes = tmp_proyecto.ResumenEjecutivo.Where(q => Int32.Parse((q.Año.ToString("d4") + q.Mes.ToString("d2"))) < Int32.Parse((proyecto.FechaInicio.Year.ToString("d4") + proyecto.FechaInicio.Month.ToString("d2"))) || Int32.Parse((q.Año.ToString("d4") + q.Mes.ToString("d2"))) > Int32.Parse((proyecto.FechaFinal.Year.ToString("d4") + proyecto.FechaFinal.Month.ToString("d2"))) ).ToList(); foreach (var item in tmp_proyecto.ResumenEjecutivo) { db.Entry(item).CurrentValues.SetValues(proyecto.ResumenEjecutivo.Where(i => i.ID == item.ID).First()); db.Entry(item).State = EntityState.Modified; } tempIdList = tmp_proyecto.ResumenEjecutivo.Select(q => q.ID).ToList(); var addRes = proyecto.ResumenEjecutivo.Where(q => !tempIdList.Contains(q.ID)); foreach (var item in addRes) { item.Proyecto = tmp_proyecto; tmp_proyecto.ResumenEjecutivo.Add(item); } foreach (var item in delRes) { //tmp_proyecto.ResumenEjecutivo.Remove(item); if (item.Resumen == null || item.Resumen.Length <0) { db.Entry(item).State = EntityState.Deleted; } } // Proyecto tmp_proyecto.Estado = proyecto.Estado; tmp_proyecto.Area = proyecto.Area; tempIdList = tmp_proyecto.Periodos.Select(q => q.ID).ToList(); foreach (var item in tempIdList) { Proyecto tmp_proyecto2 = db.Proyectos.Find(proyecto.ID); Periodo tmp_periodo = db.Periodos.Find(item); tmp_proyecto2.Periodos.Remove(tmp_periodo); } tmp_proyecto.Periodos = proyecto.Periodos; var update_proyecto = db.Entry(tmp_proyecto); update_proyecto.CurrentValues.SetValues(proyecto); db.SaveChanges(); //return RedirectToAction("Index", new { areaId = areaId, tipoId = tipoId }); return RedirectToAction("Index", new { areaId = areaId }); } FillViewBag(proyecto, areaId, tipoId); return View(proyecto); }
public void FillViewBagProyecto(Proyecto proyecto, int? areaId, int? tipoId) { ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name); int periodId = (int)Session["SelectedPeriod"]; Periodo period = db.Periodos.Find(periodId); JavaScriptSerializer serializer = new JavaScriptSerializer(); TipoProyecto tipo; ViewBag.usuario = usuario; ViewBag.PeriodoSeleccionado = period; ViewBag.TipoProyecto = db.TipoProyecto.ToList(); ViewBag.Fases = db.FasesProyecto.ToList(); ViewBag.areaId = areaId; // Areas if (areaId != null) { ViewBag.Areas = db.Areas.Where(item => item.ID == areaId).ToList(); } else if (usuario.TienePermiso(1)) // Administrador { ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == 3).OrderBy(item => item.AreaPadre.ID).ToList(); } else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa { List<Area> Areas = new List<Area>(); Areas.Add(usuario.UsuarioArea); Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList()); ViewBag.Areas = Areas.OrderBy(item => item.AreaPadre.ID); } else { List<Area> Areas = new List<Area>(); Areas.Add(usuario.UsuarioArea); ViewBag.Areas = Areas; } // Tipos if (tipoId == null) { tipo = db.TipoProyecto.FirstOrDefault(); tipoId = tipo.ID; } else { tipo = db.TipoProyecto.Find(tipoId); } ViewBag.CurrentTipo = tipo; // Proyecto List<ResumenEjecutivo> resumen = new List<ResumenEjecutivo>(); for (var i = 1; i <= 12; i++) { resumen.Add(new ResumenEjecutivo() { Mes = i, Resumen = "", Cerrado = DateTime.Now.Month == i ? false : true }); } var resumen_json = from a in resumen select new { id = a.ID, mesId = a.Mes, mes = getMonthName(a.Mes), resumen = a.Resumen, mesCerrado = a.Cerrado, mesActual = DateTime.Now.Month }; ViewBag.Equipo = serializer.Serialize(new object[] { }); ViewBag.Hitos = serializer.Serialize(new object[] { }); ViewBag.Presupuesto = serializer.Serialize(new object[] { }); ViewBag.Resumen = serializer.Serialize(resumen_json); if (proyecto != null) { if (proyecto.Equipo != null) { var json_equipo = from a in proyecto.Equipo select new { id = a.ID, nombre = a.Nombre, rol = a.Rol, Eliminar = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>" }; ViewBag.Equipo = serializer.Serialize(json_equipo); } if (proyecto.Hitos != null) { var json_hitos = from a in proyecto.Hitos select new { id = a.ID, nombre = a.Nombre, faseId = a.Fase.ID.ToString(), fase = a.Fase.Nombre, fechacompromiso = a.FechaCompromiso.ToString("dd/MM/yyyy"), fechareal = a.FechaReal != null ? ((DateTime)a.FechaReal).ToString("dd/MM/yyyy") : "", ponderacion = a.Ponderacion, acumulado = a.Acumulado, status = "", Editar = "<a href=\"javascript: $.noop();\" style=\"color:green\" class=\"fa fa-edit\" data-toggle=\"modal\" data-target=\"#EditarHito\"></a>", Eliminar = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>" }; ViewBag.Hitos = serializer.Serialize(json_hitos); } if (proyecto.Presupuesto != null) { var json_prespuesto = from a in proyecto.Presupuesto select new { id = a.ID, mesId = a.Mes, mes = getMonthName(a.Mes), planeado = a.Planeado, asignado = a.Asignado, ejercido = a.Ejercido, Editar = "<a href=\"javascript: $.noop();\" style=\"color:green\" class=\"fa fa-edit\" data-toggle=\"modal\" data-target=\"#EditarPresupuesto\"></a>", Eliminar = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>", presupuestoAsignadoCerrado = a.PresupuestoAsignadoCerrado, presupuestoEjercidoCerrado = a.PresupuestoEjercidoCerrado }; ViewBag.Presupuesto = serializer.Serialize(json_prespuesto); } if (proyecto.ResumenEjecutivo != null) { var json_resumen = from a in proyecto.ResumenEjecutivo select new { id = a.ID, mesId = a.Mes, mes = getMonthName(a.Mes), resumen = a.Resumen, mesCerrado = a.Cerrado, mesActual = DateTime.Now.Month }; ViewBag.Resumen = serializer.Serialize(json_resumen); } } }
public ActionResult Create(Proyecto proyecto, int? areaId, int? tipoId) { if (ModelState.IsValid) { db.Proyectos.Add(proyecto); db.SaveChanges(); return RedirectToAction("Index", new { areaId = areaId }); //return RedirectToAction("Index", new { areaId = areaId, tipoId = tipoId }); } FillViewBag(proyecto, areaId, tipoId); return View(proyecto); }