public ActionResult Edit(Objetivo objetivo, string lvl, int? areaId) { if (ModelState.IsValid) { var objetivo_tmp = db.Objetivos.Include("Estrategias").FirstOrDefault(item => item.ID == objetivo.ID); objetivo_tmp.Nombre = objetivo.Nombre; objetivo_tmp.Descripcion = objetivo.Descripcion; objetivo_tmp.FechaInicio = objetivo.FechaInicio; objetivo_tmp.FechaFinal = objetivo.FechaFinal; objetivo_tmp.Tipo = objetivo.Tipo; objetivo_tmp.Categoria = objetivo.Categoria; objetivo_tmp.Area = objetivo.Area; objetivo_tmp.Responsable = objetivo.Responsable; objetivo_tmp.Atribuciones.Clear(); objetivo_tmp.Atribuciones = objetivo.Atribuciones; if (lvl != "1") { List<int> tempIdList = new List<int>(); tempIdList = objetivo_tmp.Estrategias.Select(q => q.ID).ToList(); var del = objetivo_tmp.Estrategias.Where(q => tempIdList.Contains(q.ID)).ToList(); foreach (var item in del) { //tmp_proyecto.Hitos.Remove(hito); db.Entry(item).State = EntityState.Deleted; } //objetivo_tmp.Estrategias.Clear(); tempIdList = objetivo.Estrategias.Select(q => q.ID).ToList(); var add = objetivo.Estrategias.Where(q => tempIdList.Contains(q.ID)); foreach (var item in add) { item.Objetivo = objetivo_tmp; objetivo_tmp.Estrategias.Add(item); } //objetivo.Estrategias.ForEach(item => item.Objetivo = objetivo_tmp); //objetivo_tmp.Estrategias = objetivo.Estrategias; } objetivo_tmp.Periodos.Clear(); objetivo_tmp.Periodos = objetivo.Periodos; db.Entry(objetivo_tmp).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index", new { lvl = lvl, areaId = areaId }); } FillViewBagCreate(objetivo, ViewBag, lvl, areaId); return View(objetivo); }
private void FillViewBagCreate(Objetivo objetivo, dynamic ViewBag, string lvl, int? areaId) { ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name); int nivel = int.Parse(lvl); Area areac; ViewBag.usuario = usuario; ViewBag.Nivel = lvl; ViewBag.Categorias = db.CategoriaObjetivo.Where(item => item.Nivel.ID == nivel).ToList(); // Alineación if (nivel == 2) { ViewBag.Alineacion = db.TipoAlineacion.Where(item => item.ID == 1).ToList(); // Alineación Vertical } else { ViewBag.Alineacion = db.TipoAlineacion.ToList(); } // Tipo de Objetivo //if (usuario.TienePermiso(1)) // Administrador //{ // ViewBag.Tipos = db.TipoObjetivo.ToList(); //} //else //{ // ViewBag.Tipos = db.TipoObjetivo.Where(item => item.ID == usuario.UsuarioArea.Nivel.ID).ToList(); //} ViewBag.Tipos = db.TipoObjetivo.Where(item => item.ID == nivel).ToList(); // Areas if (usuario.TienePermiso(1)) // Administrador { ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == nivel).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; } // Responsables if (usuario.TienePermiso(1)) // Administrador { ViewBag.Responsables = db.Users.ToList<ApplicationUser>(); } else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa { List<ApplicationUser> Responsables = new List<ApplicationUser>(); List<Area> Areas = new List<Area>(); IEnumerable<int> AreasIds = new List<int>(); Areas.Add(usuario.UsuarioArea); Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList()); AreasIds = from a in Areas select a.ID; Responsables = db.Users.Where(user => AreasIds.Contains(user.UsuarioArea.ID)).ToList(); ViewBag.Responsables = Responsables; } else { List<ApplicationUser> Responsables = new List<ApplicationUser>(); Responsables.Add(usuario); ViewBag.Responsables = Responsables; } if (objetivo != null) { Area area; area = objetivo.Area; // Atribuciones if (objetivo.Atribuciones != null) { var json = from a in objetivo.Atribuciones select new { id = a.ID, text = a.Descripcion, area = a.Area.Nombre, Eliminar = "<a href=\"javascript: nop(void);\" style=\"color:red\" class=\"fa fa-minus\"></a>" }; ViewBag.JSONAtribuciones = new JavaScriptSerializer().Serialize(json); } else { ViewBag.JSONAtribuciones = new JavaScriptSerializer().Serialize(new object[] { }); } // Estrategias if (objetivo.Estrategias != null) { var json_estrategias = from a in objetivo.Estrategias select new { id = a.Estrategia.ID, text = a.Estrategia.Titulo, alineacionId = a.Alineacion.ID, alineacion = a.Alineacion.Nombre, objetivoId = a.ObjetivoPadreID, objetivo = a.ObjetivoPadreID!= null ? db.Objetivos.Find(a.ObjetivoPadreID).Nombre : "", Eliminar = "<a href=\"javascript: nop(void);\" style=\"color:red\" class=\"fa fa-minus\"></a>" }; ViewBag.JSONEstrategias = new JavaScriptSerializer().Serialize(json_estrategias); } else { ViewBag.JSONEstrategias = new JavaScriptSerializer().Serialize(new object[] { }); } } else { ViewBag.JSONAtribuciones = new JavaScriptSerializer().Serialize(new object[] { }); ViewBag.JSONEstrategias = new JavaScriptSerializer().Serialize(new object[] { }); } if (areaId == null) { if (usuario.TienePermiso(1) || (nivel == 1 && usuario.TienePermiso(3)) || usuario.TieneNivel(1)) // Administrador { areac = db.Areas.Where(item => item.Nivel.ID == nivel).First(); } else if (usuario.TieneNivel(3) && usuario.TienePermiso(10)) { areac = usuario.UsuarioArea.AreaPadre; } else { areac = usuario.UsuarioArea; } areaId = areac.ID; } else { areac = db.Areas.Where(item => item.Nivel.ID == nivel).FirstOrDefault(item => item.ID == areaId); } ViewBag.CurrentArea = areac; }
public ActionResult Create(Objetivo objetivo, string lvl, int? areaId) { if (ModelState.IsValid) { db.Objetivos.Add(objetivo); db.SaveChanges(); return RedirectToAction("Index", new { lvl = lvl, areaId = areaId }); } FillViewBagCreate(objetivo, ViewBag, lvl, areaId); return View(objetivo); }