public ActionResult Create(EditRole role, string[] applicationOptionActivities) { try { RoleBase roleBase = new RoleBase(); if (ModelState.IsValid) { roleBase.OrganizationId = this.OrganizationId; roleBase.Name = role.Name; roleBase.Active = role.Active; roleBase.RoleApplicationOptionActivities = new List <RoleApplicationOptionActivity>(); DataBase.Roles.Insert(roleBase); if (applicationOptionActivities != null) { foreach (var insert in applicationOptionActivities.Where(p => p != "false")) { string[] keyParts = insert.Split('-'); RoleApplicationOptionActivity roleApplicationOptionActivity = new RoleApplicationOptionActivity() { ApplicationId = keyParts[0], OptionId = keyParts[1], ActivityId = keyParts[2] }; roleBase.RoleApplicationOptionActivities.Add(roleApplicationOptionActivity); DataBase.RoleApplicationOptionActivities.Insert(roleApplicationOptionActivity); } } DataBase.Save(); return(RedirectToAction("Index")); } }catch { this.AddDefaultErrorMessage(); } return(RedirectToAction("Index", "Role", null, true)); }
public ActionResult Edit(EditRole role, string[] applicationOptionActivities) { try { RoleBase roleBase = DataBase.Roles.Get(p => p.OrganizationId == this.OrganizationId && p.RoleId == role.RoleId, includeProperties: "RoleApplicationOptionActivities").SingleOrDefault(); if (roleBase.IsPrivate) { return(RedirectToAction("Index")); } if (ModelState.IsValid) { roleBase.OrganizationId = this.OrganizationId; roleBase.Name = role.Name; roleBase.Active = role.Active; DataBase.Roles.Update(roleBase); if (applicationOptionActivities == null) { applicationOptionActivities = new string[0]; } var deleteList = roleBase.RoleApplicationOptionActivities.Where(p => p.ApplicationOptionActivity.AllowAssignPermission && !applicationOptionActivities.Where(q => q != "false").Contains(p.ApplicationOptionActivity.Key)).ToList(); var insertList = applicationOptionActivities.Where(p => p != "false" && !roleBase.RoleApplicationOptionActivities.Any(q => q.ApplicationOptionActivity.AllowAssignPermission && q.ApplicationOptionActivity.Key == p)).ToList(); foreach (var delete in deleteList) { DataBase.RoleApplicationOptionActivities.Delete(delete); } foreach (var insert in insertList.Where(p => p != "false")) { string[] keyParts = insert.Split('-'); RoleApplicationOptionActivity roleApplicationOptionActivity = new RoleApplicationOptionActivity() { ApplicationId = keyParts[0], OptionId = keyParts[1], ActivityId = keyParts[2], RoleId = roleBase.RoleId }; roleBase.RoleApplicationOptionActivities.Add(roleApplicationOptionActivity); DataBase.RoleApplicationOptionActivities.Insert(roleApplicationOptionActivity); } DataBase.Save(); return(RedirectToAction("Index")); } } catch { this.AddDefaultErrorMessage(); } return(RedirectToAction("Index", "Role", null, true)); }