public ActionResult PermissionSet(int id, string UpdatePermissions, string DeletePermissions, string NewPermissions) { var model = new AdminPermissionSetModel(); model.AddNavigation("Admin Panel", "Overview", "Admin", null); model.AddNavigation("Edit Permission Set"); using (ForumRespository db = new ForumRespository()) { Forum_User CurrentUser = GetCurrentUser(db); if (!UserIdentity.IsAdmin) return AuthenticationHelper.AccessDeniedView(model); // Administrating the forum requires the user to be an Admin. HandlePermissionsLinkUpdates(); Forum_Permission CurrentPermissionSet; if (id == 0) CurrentPermissionSet = db.GetAllPermissionSets().First(); else CurrentPermissionSet = db.GetPermissionSetByID(id); if (CurrentPermissionSet == null) return NotFoundView("Permission Set"); if (IsHttpPost && AntiForgeryTokenValid) { if (!String.IsNullOrEmpty(UpdatePermissions)) { UpdateModel(CurrentPermissionSet, "PermissionSet"); db.Save(); } else if (!String.IsNullOrEmpty(DeletePermissions) && CurrentPermissionSet.Forum_PermissionsLinks.Count == 0 && db.GetAllPermissionSets().Count() > 1) { db.DeletePermission(CurrentPermissionSet); db.Save(); return RedirectToAction("PermissionSet", new { id = 0 }); } else if (!String.IsNullOrEmpty(NewPermissions)) { var NewPermissionSet = new Forum_Permission(); NewPermissionSet.Name = "Unnamed"; db.AddPermission(NewPermissionSet); db.Save(); return RedirectToAction("PermissionSet", new { id = NewPermissionSet.PermissionID }); } } model.PermissionSet = CurrentPermissionSet; model.UserGroups = db.GetAllRoles().Where(R => R.RoleID != (int)BuildInRole.Administrator).ToClassList(R => new AdminNamedID() { ID = R.RoleID, Name = R.Name }); model.Categories = db.GetAllCategories().ToClassList(C => new AdminNamedID() { ID = C.CategoryID, Name = C.Name }); model.PermissionSets = db.GetAllPermissionSets().ToClassList(P => new AdminNamedID() { ID = P.PermissionID, Name = P.Name }); model.Fixed = AdminPermissionLinkEditors.FixedSet.PermissionSets; model.FixedNamedID = new AdminNamedID() { ID = CurrentPermissionSet.PermissionID, Name = CurrentPermissionSet.Name }; model.PermissionLinkList = db.GetPermissionLinks().Where(L => L.PermissionID == CurrentPermissionSet.PermissionID).OrderBy(L => L.CategoryID).ToClassList(L => new AdminPermissionLink() { Category = new AdminNamedID() { ID = L.CategoryID, Name = db.GetCategoryByID(L.CategoryID).Name }, UserGroup = new AdminNamedID() { ID = L.RoleID, Name = db.GetRole(L.RoleID).Name }, PermissionSet = model.FixedNamedID }); return View(model); } }