private void updateApp(DesktopUser currentUser, DesktopUser backupedUser, App app) { if (app.hasRola()) { if (currentCheckedRola != null) { string originalRolaId = backupedUser.getRolaId(app); if (originalRolaId.Equals(currentCheckedRola.Name)) { currentUser.addUpdateApp(app); //użytkownik originalnie miał tę apkę z taką samą rolą więc tylko dodaję ją do bieżącego użytkownika deleteFromChangedAppDataDict(currentUser, app); //żeby się wyświetlała, ale nie chcę jej na liście zmian } else //użytkownik miał ją ale z inną rolą, należy zaktualizować { addApp(currentUser, app); } } } else //ta apka nie ma roli { currentUser.addUpdateApp(app); //a użytkownik originalnie ją miał, więc tylko dodaję ją do bieżącego użytkownika deleteFromChangedAppDataDict(currentUser, app); //żeby się wyświetlała, ale nie chcę jej na liście zmian } }
private void addApp(DesktopUser currentUser, App app) { Rola rola; if (!app.hasRola()) //tutaj aktualizuję tylko aplikację, która nie ma roli; aplikację która ma rolę aktualizuję po zaznaczeniu roli { currentUser.addUpdateApp(app); addChangedAppDataToDict(currentUser, app); saveButton.Enabled = true; saveAndCloseButton.Enabled = true; statusInformationButton.Enabled = true; } else { if (currentCheckedRola != null) //ten fragment kodu uruchamiany jest ze zdarzenia ItemCheck na liście ról { rolaDict.TryGetValue(currentCheckedRola.Name, out rola); currentUser.addUpdateApp(app, rola); addChangedAppDataToDict(currentUser, app); saveButton.Enabled = true; saveAndCloseButton.Enabled = true; statusInformationButton.Enabled = true; } } }
private void addChangedAppDataToDict(DesktopUser user, App app) { Dictionary <App, AppDataItem> appChangeDict; AppDataItem appData = user.getAppData(app); if (!userAppChangeDict.ContainsKey(user)) { appChangeDict = new Dictionary <App, AppDataItem>(); appChangeDict.Add(app, appData); userAppChangeDict.Add(user, appChangeDict); } else { userAppChangeDict.TryGetValue(user, out appChangeDict); if (appChangeDict.ContainsKey(app)) { appChangeDict[app] = appData; } else { appChangeDict.Add(app, appData); } } }
private void addAppDataDisplay(TabPage tabPage, DesktopUser user) { List <App> chamgedAppList = changedDataBundle.getChangedUserApps(user); appCount = 0; foreach (App app in chamgedAppList) { AppDataDisplay appDataDisplay = new AppDataDisplay(); appDataDisplay.Name = "appDataDisplay1"; appDataDisplay.Size = new System.Drawing.Size(appDataDisplayWidth, appDataDisplayHeigth); appDataDisplay.TabIndex = 0; //liczę położenie kolejnego panelu appDataDisplay.Location = new System.Drawing.Point(7, appDataDisplayHeigth * appCount + 7); populateAppDataDisplay(appDataDisplay, user, app); tabPage.Controls.Add(appDataDisplay); appCount++; } if (appCount > maxAppCount) { maxAppCount = appCount; } }
//dane każdego użytkownika uzupełniam o zestawienie aplikacji do których ma uprawnienia wraz z rolami private void getUserApps() { DesktopUser user = null; foreach (string userId in allUsersDict.Keys) { string query = SqlQueries.getUserApps + "'" + userId + "'"; List <string[]> appList = dbReader.readFromDB(query).getQueryDataAsStrings(); List <string> appIdList = convertColumnDataToList(appList); //ta kwerenda zwraca pojedynczą listę, tj tylko id allUsersDict.TryGetValue(userId, out user); if (appIdList.Count > 0) { App app; Rola rola; foreach (string appId in appIdList) { appDictionary.TryGetValue(appId, out app); string rolaId = getAppRola(userId, appId); rolaDict.TryGetValue(rolaId, out rola); user.addUpdateApp(app, rola); } } } }
// // //zapamiętywanie zmian i zapisywanie zmian // // #region Region : zapamiętywanie zmian private DesktopUser getCurrentUser() { string userId = currentSelectedUser.Name; DesktopUser user = null; allUsersDict.TryGetValue(userId, out user); return(user); }
public AppDataItem getOldAppData(DesktopUser user, App app) { DesktopUser backupedUser; if (userBackupDict.ContainsKey(user.id)) { userBackupDict.TryGetValue(user.id, out backupedUser); return(backupedUser.getAppData(app)); } return(null); }
public List <App> getChangedUserApps(DesktopUser user) { Dictionary <App, AppDataItem> changedAppDataDict; if (changesDict.ContainsKey(user)) { changesDict.TryGetValue(user, out changedAppDataDict); return(changedAppDataDict.Keys.ToList()); } return(null); }
private void populateAppDataDisplay(AppDataDisplay appDataDisplay, DesktopUser user, App app) { AppDataItem newAppData = changedDataBundle.getNewAppData(user, app); AppDataItem oldAppData = changedDataBundle.getOldAppData(user, app); appDataDisplay.setAppName(newAppData.appName); if (newAppData.isEnabled) { appDataDisplay.setNewRolaName(newAppData.rolaName); appDataDisplay.setNewRolaDesc(newAppData.rolaDesc); } else { appDataDisplay.setNewRolaName(""); appDataDisplay.setNewRolaDesc(""); } if (oldAppData != null) { appDataDisplay.setOldRolaDesc(oldAppData.rolaDesc); appDataDisplay.setOldRolaName(oldAppData.rolaName); } else { appDataDisplay.setOldRolaDesc(""); appDataDisplay.setOldRolaName(""); } string status = changedDataBundle.getAppDataStatus(user, app); switch (status) { case "delete": appDataDisplay.setStatus("do usunięcia"); break; case "update": appDataDisplay.setStatus("do aktualizacji"); break; case "insert": appDataDisplay.setStatus("do dodania"); break; default: appDataDisplay.setStatus(""); break; } }
private DesktopUser backupUser(DesktopUser user) { DesktopUser backupUser; if (!userBackupDict.ContainsKey(user.id)) //dodaję tylko raz, na początku, tj oryginał { backupUser = (DesktopUser)user.Clone(); userBackupDict.Add(user.id, backupUser); } else { userBackupDict.TryGetValue(user.id, out backupUser); } return(backupUser); }
public AppDataItem getNewAppData(DesktopUser user, App app) { AppDataItem newAppData; Dictionary <App, AppDataItem> changedAppDataDict; if (changesDict.ContainsKey(user)) { changesDict.TryGetValue(user, out changedAppDataDict); if (changedAppDataDict.ContainsKey(app)) { changedAppDataDict.TryGetValue(app, out newAppData); return(newAppData); } } return(null); }
private void deleteFromChangedAppDataDict(DesktopUser user, App app) { Dictionary <App, AppDataItem> appChangeDict; userAppChangeDict.TryGetValue(user, out appChangeDict); appChangeDict.Remove(app); if (appChangeDict.Count == 0) { userAppChangeDict.Remove(user); } if (userAppChangeDict.Count == 0) { saveButton.Enabled = false; saveAndCloseButton.Enabled = false; statusInformationButton.Enabled = false; } }
private string generateSingleQuery(DesktopUser user, string queryType, AppDataItem newAppData, AppDataItem oldAppData) { string newAppId = newAppData.appId; string newRolaId = newAppData.rolaId; string oldRolaId = ""; string oldAppId = ""; if (oldAppData != null) //jest null wtedy, gdy robiony jest insert { oldRolaId = oldAppData.rolaId; oldAppId = oldAppData.appId; } string query = ""; switch (queryType) { case "delete": if (oldRolaId.Equals("")) { query = SqlQueries.deleteUserApp.Replace("@appId", oldAppId).Replace("@userId", user.id) + "\r\n"; } else { query = SqlQueries.deleteUserAppAndRola.Replace("@appId", oldAppId).Replace("@rolaId", oldRolaId).Replace("@userId", user.id) + "\r\n"; } break; case "update": query = query = SqlQueries.updateUserRola.Replace("@newRolaId", newRolaId).Replace("@oldRolaId", oldRolaId).Replace("@userId", user.id) + "\r\n"; break; case "insert": if (newRolaId.Equals("")) { query = SqlQueries.insertUserApp.Replace("@appId", newAppId).Replace("@userId", user.id) + "\r\n"; } else { query = SqlQueries.insertUserAppAndRola.Replace("@appId", newAppId).Replace("@rolaId", newRolaId).Replace("@userId", user.id) + "\r\n"; } break; } return(query); }
public TreeNode[] populateTreviewBranch(Dictionary <string, string> items) { TreeNode[] childNodes = new TreeNode[items.Count]; int i = 0; string userDisplayName = ""; DesktopUser user = null; foreach (string userId in items.Keys) { items.TryGetValue(userId, out userDisplayName); allUsersDict.TryGetValue(userId, out user); TreeNode treeNode = new TreeNode(userDisplayName); treeNode.Name = user.id; childNodes[i] = treeNode; i++; } return(childNodes); }
public string getAppDataStatus(DesktopUser user, App app) { DesktopUser backupUser; userBackupDict.TryGetValue(user.id, out backupUser); Dictionary <App, AppDataItem> backupUserAppDict = backupUser.userAppDict; AppDataItem newAppData = getNewAppData(user, app); if (!backupUserAppDict.ContainsKey(app)) { return("insert"); } else if (!newAppData.isEnabled) { return("delete"); } return("update"); }
public object Clone() { DesktopUser other = new DesktopUser(); other.name = String.Copy(name); other.surname = String.Copy(surname); other.id = String.Copy(id); other.windowsLogin = String.Copy(windowsLogin); other.sqlLogin = String.Copy(sqlLogin); foreach (App app in this.userAppDict.Keys) { AppDataItem appData = (AppDataItem)this.getAppData(app).Clone(); other.userAppDict.Add(app, appData); } return(other); }
private void updateListBoxes() { //wyszukuję aplikacji zaznaczonego użytkownika DesktopUser user = null; allUsersDict.TryGetValue(currentSelectedUser.Name, out user); //parametr "name" zawiera Id użytkownika List <App> userApps = user.getApps(); //jeżeli user ma jakieś uprawnienia to te aplikacje zafajkowuję oraz rolę zaznaczonej if (userApps != null) { foreach (App app in userApps) { ListViewItem appItem = appListView.Items[app.id]; appItem.Checked = true; } checkRolaCheckbox(); } }
private void getUserData() { string query = SqlQueries.getUsers + "'" + adminLogin + "'"; List <string[]> userData = dbReader.readFromDB(query).getQueryDataAsStrings(); foreach (string[] data in userData) { DesktopUser desktopUser = new DesktopUser(); desktopUser.name = data[SqlQueries.userImieIndex]; desktopUser.surname = data[SqlQueries.userNazwiskoIndex]; desktopUser.sqlLogin = data[SqlQueries.userSqlLoginIndex]; desktopUser.windowsLogin = data[SqlQueries.userWindowsLoginIndex]; desktopUser.id = data[SqlQueries.userIdIndex]; allUsersDict.Add(data[SqlQueries.userIdIndex], desktopUser); } groupUsers(); //usuwam ze słowników wszystkich zduplikowanych użytkowników, bo w kolejnych kwerendach wyszukujących programów dla użytkowników wyniki są niejednoznaczne removeDuplicatedWindowsUsers(); }
private void generateOneTab(DesktopUser user) { TabPage tabPage = new System.Windows.Forms.TabPage(); tabPage.Location = new System.Drawing.Point(4, 22); tabPage.Name = user.id; tabPage.Padding = new System.Windows.Forms.Padding(3); tabPage.Size = new System.Drawing.Size(tabPageWidth, tabPageHeigth); tabPage.TabIndex = 0; tabPage.Text = user.name + " " + user.surname; tabPage.UseVisualStyleBackColor = true; int tabPageHeaderLength = TextRenderer.MeasureText(tabPage.Text, tabPage.Font).Width + 10; //dodaję poprawkę na marginesy cumulativeTabPageHeadersLength += tabPageHeaderLength; addAppDataDisplay(tabPage, user); tabPage.Height = appCount * appDataDisplayHeigth; tabControl1.Controls.Add(tabPage); }
private void groupUsers() { string userDisplayName = ""; DesktopUser user = null; foreach (string userId in allUsersDict.Keys) { allUsersDict.TryGetValue(userId, out user); if (user.sqlLogin != "") { userDisplayName = user.sqlLogin + " (" + user.name + " " + user.surname + ")"; //nazwa użytkownika wyświetlana w drzewie sqlUsersDict.Add(user.id, userDisplayName); } if (user.windowsLogin != "") { userDisplayName = user.windowsLogin + " (" + user.name + " " + user.surname + ")"; //nazwa użytkownika wyświetlana w drzewie windowsUsersDict.Add(user.id, userDisplayName); } } }
private void addUpdateUserApp(string appId, bool isChecked) { DesktopUser currentUser = getCurrentUser(); DesktopUser backupedUser = backupUser(currentUser); App app; appDictionary.TryGetValue(appId, out app); if (isChecked) //Administrator chce użytkownikowi aplikację dodać lub zaktualizować rolę aplikacji, którą użytkownik już ma { if (!backupedUser.hasApp(app)) //rzeczywiście użytkownik nie miał tej aplikacji oryginalnie { addApp(currentUser, app); } else //miał ją oryginalnie, więc Administrator w tej sesji najpierw ją usunął a teraz chce ponownie dodać //więc tak naprawdę chodzi o aktualizcję aplikacji a nie jej dodanie { updateApp(currentUser, backupedUser, app); } } else //Administrator chce użytkownikowi zabrać uprawnienia do aplikacji { if (currentUser.markAppDisabled(app)) //aplikację udało się odznaczyć, co może oznaczać, że użytkownik ją oryginalnie miał ale może też oznaczać, //że jej nie miał ale została ona dodana w tej sesji, po czym Administrator zmienił zdanie i ją chce usunąć { if (backupedUser.hasApp(app)) //tak więc sprawdzam, czy oryginalnie ta aplikacja rzeczywiście była w portfolio użytkownika { addChangedAppDataToDict(currentUser, app); saveButton.Enabled = true; saveAndCloseButton.Enabled = true; statusInformationButton.Enabled = true; } else //i jeżeli jej nie było, to po prostu usuwam ze zmian { currentUser.deleteApp(app); deleteFromChangedAppDataDict(currentUser, app); } } } }
private void removeDuplicatedWindowsUsers() { Dictionary <string, List <string> > users = new Dictionary <string, List <string> >(); //kluczem jest login windowsowy małymi literami, wartością jest lista id DesktopUser user = null; List <string> idList = null; //wypełniam słownik, żeby pogrupować użytkowników po ich loginach windowsowych SPROWADZONYCH DO LOWERCASE foreach (string userId in windowsUsersDict.Keys) { allUsersDict.TryGetValue(userId, out user); string windowsLogin = user.windowsLogin.ToLower(); string id = user.id; if (users.ContainsKey(windowsLogin)) { users.TryGetValue(windowsLogin, out idList); idList.Add(id); } else { idList = new List <string>(); idList.Add(id); users.Add(windowsLogin, idList); } } foreach (string windowsLogin in users.Keys) { users.TryGetValue(windowsLogin, out idList); if (idList.Count > 1) //tzn login powtarza się { foreach (string userId in idList) { windowsUsersDict.Remove(userId); duplicatedWindowsUsers.Add(userId, windowsLogin + " (id użytkownika = " + userId + ")"); } } } }