public bool updatePRolePermission(int ID, Permission[] PermissionList) { try { if (getRoleById(ID) != null) { List <Role_Permissions> select = base.db.Role_Permissions.Where(g => g.RoleID == ID).ToList(); if (select.Count <= 0) { foreach (Permission item in PermissionList) { Role_Permissions addItem = new Role_Permissions(); if (item.Checked == true) { addItem.RoleID = ID; addItem.PermissionID = item.ID; select.Add(addItem); } } base.db.Role_Permissions.AddRange(select); base.db.SaveChanges(); } else { foreach (Permission item in PermissionList) { Role_Permissions addItem = new Role_Permissions(); if (item.Checked == false && select.Where(g => g.PermissionID == item.ID).Count() == 1) { base.db.Role_Permissions.Remove(select.Where(g => g.PermissionID == item.ID).FirstOrDefault()); } if (item.Checked == true && select.Where(g => g.PermissionID == item.ID).Count() == 0) { addItem.RoleID = ID; addItem.PermissionID = item.ID; base.db.Role_Permissions.Add(addItem); } } base.db.SaveChanges(); } return(true); } else { return(false); } } catch (Exception) { return(false); } }
protected void BtnSaveRoleChanges_Click(object sender, EventArgs e) { LblMessage.Text = ""; int roleID = Convert.ToInt32(DdlRoles.SelectedValue); using(GRASPEntities db = new GRASPEntities()) { db.Database.ExecuteSqlCommand("DELETE FROM RolesToResponseStatus WHERE RoleID=@roleID", new SqlParameter("@roleID", roleID)); foreach(ListItem li in CblSelectableStatus.Items) { if(li.Selected) { db.Database.ExecuteSqlCommand("INSERT INTO RolesToResponseStatus (RoleID,ResponseStatusID,RoleToRespStatusTypeID) VALUES (@roleID,@respStatusID,1)", new SqlParameter("@roleID", roleID), new SqlParameter("@respStatusID", li.Value)); } } foreach(ListItem li in CblReviewableStatus.Items) { if(li.Selected) { db.Database.ExecuteSqlCommand("INSERT INTO RolesToResponseStatus (RoleID,ResponseStatusID,RoleToRespStatusTypeID) VALUES (@roleID,@respStatusID,2)", new SqlParameter("@roleID", roleID), new SqlParameter("@respStatusID", li.Value)); } } //Save the new added permissions and remove the removed permissions. List<Role_Permissions> previousRolePermissionses = Permissions.GetRolePermissionsByRoleID(roleID); List<Role_Permissions> newRolePermissionses = new List<Role_Permissions>(); foreach (ListItem li in cblPermissions.Items) { if (li.Selected) { Role_Permissions rolePermission = new Role_Permissions() {RoleID=roleID, PermissionID = Convert.ToInt32(li.Value)}; if (previousRolePermissionses.Exists(rp => rp.PermissionID == rolePermission.PermissionID)) { int deletedItemIndex = previousRolePermissionses.FindIndex(rp => rp.PermissionID == rolePermission.PermissionID); previousRolePermissionses.RemoveAt(deletedItemIndex); } else { newRolePermissionses.Add(rolePermission); } } } bool isSaved = Permissions.UpdateRolePermissions(newRolePermissionses, previousRolePermissionses); if (isSaved) { LblMessage.ForeColor = Color.Green; LblMessage.Text = "Changes have been saved successfully."; } else { LblMessage.ForeColor = Color.Red; LblMessage.Text = "Error happened, changes have not saved."; } } }