Ejemplo n.º 1
0
        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
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        //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);
                    }
                }
            }
        }
Ejemplo n.º 6
0
        //
        //
        //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);
        }
Ejemplo n.º 9
0
        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;
            }
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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;
            }
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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");
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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();
            }
        }
Ejemplo n.º 18
0
        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();
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
                }
            }
        }
Ejemplo n.º 21
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 22
0
        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 + ")");
                    }
                }
            }
        }