示例#1
0
        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);
        }
示例#2
0
        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;
        }
示例#3
0
 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);
 }