// Promote / Demote users private void promoteDemoteToolStripMenuItem_Click(object sender, EventArgs e) { int SelectedUsersCount = listView_Users.SelectedItems.Count; if (SelectedUsersCount == 0) { return; } long AdminCount; long SelectedAdminCount; long AdminRoleID; long UserRoleID; using (UserController userController = new UserController()) using (RoleController roleController = new RoleController()) { AdminRoleID = roleController.GetRoleID("Admin"); UserRoleID = roleController.GetRoleID("User"); // Check if Admin want to demote all Admins List <UserModelDataTransferObject> AdminsList = userController.GetUsersByRoleID(AdminRoleID); AdminCount = AdminsList.Count; SelectedAdminCount = 0; foreach (ListViewItem item in listView_Users.SelectedItems) { long UserID = Convert.ToInt64(item.Tag); UserModelDataTransferObject CurrentUser = userController.GetUserByID(UserID); if (CurrentUser.IsAdministrator()) { ++SelectedAdminCount; } } } if (AdminCount == SelectedAdminCount && AdminCount == listView_Users.SelectedItems.Count) { MaterialMessageBox.Show("You cannot demote all Administrators.", "Easy Survey - Demote Users", MaterialMessageBox.MessageBoxButtons.OK, MaterialMessageBox.MessageBoxIcon.Error); return; } // Check if Admin wants to demote himself bool AdminSelectedHimself = false; foreach (ListViewItem item in listView_Users.SelectedItems) { long UserID = Convert.ToInt64(item.Tag); if (LoggedUser.UserID == UserID) { AdminSelectedHimself = true; break; } } if (AdminSelectedHimself) { MaterialMessageBox.Show("You cannot demote yourself.", "Easy Survey - Demote Users", MaterialMessageBox.MessageBoxButtons.OK, MaterialMessageBox.MessageBoxIcon.Error); return; } // Demote / Promote selected users. using (UserController userController = new UserController()) using (UserRoleController userRoleController = new UserRoleController()) foreach (ListViewItem item in listView_Users.SelectedItems) { long UserID = Convert.ToInt64(item.Tag); UserModelDataTransferObject CurrentUser = userController.GetUserByID(UserID); if (CurrentUser.IsAdministrator()) // Demote to standard user. { userRoleController.SetUserRole(UserID, UserRoleID); item.Group = listView_Users.Groups["User"]; } else if (!CurrentUser.IsAdministrator()) // Promote to admin. { userRoleController.SetUserRole(UserID, AdminRoleID); item.Group = listView_Users.Groups["Administrator"]; } } }