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);
            }
        }
Beispiel #2
0
    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.";
            }

        }
    }