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));
        }
Ejemplo n.º 3
0
        //OnActionExecuting method is using Entity Framework to add a new ActionLog register. It creates and fills a new entity instance with the context information from filterContext.
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            // Log Action Filter Call
            ApplicationDbContext db = new ApplicationDbContext();

            // TODO: Add your acction filter's tasks here
            CustomAssemblyHelper helper = new CustomAssemblyHelper();
            var syscontrollersList      = helper.GetTypesAssembly <Controller>();

            foreach (Type controller in syscontrollersList)
            {
                //if (controller.Name != "HomeController" && controller.Name != "AccountController" && controller.Name != "PerfilController" && controller.Name != "RolesAdminController" && controller.Name != "UsersAdminController")
                if (controller.Name == "SolicitudController" || controller.Name == "OrdenController")
                {
                    string controladoraNombre = controller.Name.Replace("Controller", "");

                    if (controller.IsDefined(typeof(MenuItemAttribute), false))
                    {
                        var controladoraAtributos      = helper.GetTypeAttributes <MenuItemAttribute>(controller);
                        MenuItemAttribute atributomenu = (MenuItemAttribute)controladoraAtributos.FirstOrDefault();

                        var moduloToInsert = new Modulo();
                        moduloToInsert.ModuloDescripcion = atributomenu.MenuItemModulo;

                        //db.Modulos.AddOrUpdate(p => p.ModuloDescripcion, moduloToInsert);
                        var moduloInDataBase = db.Modulos.Where(s => s.ModuloDescripcion == moduloToInsert.ModuloDescripcion).SingleOrDefault();
                        if (moduloInDataBase == null)
                        {
                            db.Modulos.Add(moduloToInsert);
                            db.SaveChanges();
                        }

                        Controladora controladoratoinsert = new Controladora()
                        {
                            ControladoraNumero      = atributomenu.MenuItemNumero,
                            ControladoraModulo      = atributomenu.MenuItemModulo,
                            ControladoraNombre      = controladoraNombre,
                            ControladoraNombreFull  = controller.Name,
                            ControladoraDescripcion = atributomenu.MenuItemDescripcion,
                            Controladora_Modulo     = moduloToInsert
                        };

                        //db.Controladoras.AddOrUpdate(p => p.ControladoraNombre, controladoratoinsert);
                        var controladoraInDataBase = db.Controladoras.Where(s => s.ControladoraNombre == controladoratoinsert.ControladoraNombre).SingleOrDefault();
                        if (controladoraInDataBase == null)
                        {
                            db.Controladoras.Add(controladoratoinsert);
                            db.SaveChanges();
                        }

                        //Recupero todas las acciones de la controladorapor REFLECTION
                        var accionescontroladora = helper.GetControllerActions(controller);

                        foreach (var action in accionescontroladora)
                        {
                            var             accionAtributos = helper.GetTypeAttributes <ActionAttribute>(action);
                            ActionAttribute accionatributo  = (ActionAttribute)accionAtributos.FirstOrDefault();

                            //foreach (var atributo in accionatributos)
                            //{
                            //    if (atributo.GetType().Name == "ActionAttribute")
                            //    {
                            //        var descripcion = action.GetCustomAttributes(typeof(ActionAttribute));
                            //        ActionAttribute desc = (ActionAttribute)descripcion.FirstOrDefault();
                            //    }
                            //}
                            if (action.IsDefined(typeof(ActionAttribute), false) && accionatributo != null)
                            {
                                Accion acciontoinsert = new Accion()
                                {
                                    AccionNumero      = accionatributo.AccionNumero,
                                    AccionActivo      = accionatributo.AccionInicial,
                                    AccionNombre      = action.Name,
                                    AccionDescripcion = accionatributo.AccionNombre,
                                };

                                //db.Acciones.AddOrUpdate(p => p.AccionNombre, acciontoinsert);
                                var accionInDataBase = db.Acciones.Where(s => s.AccionNombre == acciontoinsert.AccionNombre).SingleOrDefault();
                                if (accionInDataBase == null)
                                {
                                    db.Acciones.Add(acciontoinsert);
                                    db.SaveChanges();
                                }
                            }
                        }
                    }
                }
            }

            this.OnActionExecuting(filterContext);
        }