Ejemplo n.º 1
0
        public ActionResult Create([Bind(Include = "PerfilID,PerfilDescripcion,PerfilInicial,PerfilOwerRequerido,ControladoraID,AccionID,RolID")] Perfil perfil)
        {
            if (ModelState.IsValid)
            {
                //db.Entry(perfil.Perfil_Rol).State = EntityState.Unchanged;
                //perfil.Perfil_Rol = null;

                string controladoraNombreFull = db.Controladoras.Where(i => i.ControladoraID == perfil.ControladoraID).Single().ControladoraNombreFull;
                CustomAssemblyHelper helper   = new CustomAssemblyHelper();
                var syscontroller             = helper.GetTypesAssemblyInstancia <Controller>(controladoraNombreFull);

                //Recupero todas las acciones de la controladorapor REFLECTION
                var             accionescontroladora = helper.GetControllerActions(syscontroller);
                var             nombreAccion         = db.Acciones.Where(r => r.AccionID == perfil.AccionID).Single().AccionNombre;
                var             action          = accionescontroladora.Where(r => r.Name == nombreAccion).Single();
                var             accionAtributos = helper.GetTypeAttributes <ActionAttribute>(action);
                ActionAttribute accionatributo  = (ActionAttribute)accionAtributos.FirstOrDefault();
                var             nombreRol       = db.Roles.Where(r => r.Id == perfil.RolID).Single().Name;

                var controladoraDesc = db.Controladoras.Where(i => i.ControladoraID == perfil.ControladoraID).Single().ControladoraDescripcion;
                //var accionDesc = db.Acciones.Where(i => i.AccionID == perfil.AccionID).Single().AccionDescripcion;
                perfil.PerfilDescripcion = controladoraDesc + " - " + accionatributo.AccionDescripcion + " - " + nombreRol;

                db.Perfiles.Add(perfil);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.AccionID       = new SelectList(db.Acciones, "AccionID", "AccionNombre", perfil.AccionID);
            ViewBag.ControladoraID = new SelectList(db.Controladoras, "ControladoraID", "ControladoraNombre", perfil.ControladoraID);
            //ViewBag.RolID = new SelectList(db.Roles, "Id", "Name", perfil.RolID);
            ViewBag.RolID = new SelectList(db.Roles, "Id", "Name", perfil.RolID);
            return(View(perfil));
        }
Ejemplo n.º 2
0
        // GET: Perfil
        public ActionResult Index(int?id, int?controladoraID)
        {
            //var perfiles = db.Perfiles.Include(p => p.Perfil_Accion).Include(p => p.Perfil_Controladora).Include(p => p.Perfil_Rol);
            //return View(perfiles.ToList());

            var viewModel = new PerfilIndexViewModel();

            viewModel.Perfiles = db.Perfiles.Include(p => p.Perfil_Accion).Include(p => p.Perfil_Controladora).Include(p => p.Perfil_Rol);

            viewModel.Modulos = db.Modulos.Include(i => i.Modulo_Controladoras).OrderBy(i => i.ModuloDescripcion);

            //id de modulo
            if (id != null)
            {
                ViewBag.ModuloID        = id.Value;
                viewModel.Controladoras = viewModel.Modulos.Where(i => i.ModuloID == id.Value).Single().Modulo_Controladoras;
            }

            if (controladoraID != null)
            {
                ViewBag.ControladoraID = controladoraID.Value;
                string controladoraNombreFull = viewModel.Controladoras.Where(i => i.ControladoraID == controladoraID).Single().ControladoraNombreFull;
                CustomAssemblyHelper helper   = new CustomAssemblyHelper();
                var syscontroller             = helper.GetTypesAssemblyInstancia <Controller>(controladoraNombreFull);

                //Recupero todas las acciones de la controladora por REFLECTION
                var           accionescontroladorasys = helper.GetControllerActions(syscontroller).ToList();
                var           accionesSYS             = accionescontroladorasys.Select(r => r.Name).Distinct().ToList();
                var           accionesDB           = db.Acciones;
                List <Accion> accionescontroladora = new List <Accion>();
                foreach (var accionDB in accionesDB)
                {
                    foreach (var acionSYS in accionesSYS)
                    {
                        if (accionDB.AccionNombre == acionSYS)
                        {
                            accionescontroladora.Add(accionDB);
                        }
                    }
                }

                viewModel.Acciones = accionescontroladora;
            }

            return(View(viewModel));
        }