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)); }
//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); }