Пример #1
0
        private void popMenuDeleteUser_Click(object sender, EventArgs e)
        {
            //удалить пользователя
            mycOLAProle role  = (mycOLAProle)dxListRoles.SelectedItem;
            mycOLAPuser ouser = (mycOLAPuser)dxListUsers.SelectedItem;
            Boolean     bOK   = false;

            DialogResult result = MessageBox.Show("Удаляем пользователя ?", "DialogBox", MessageBoxButtons.YesNo);

            switch (result)
            {
            case DialogResult.Yes: bOK = true; break;
            }
            if (bOK)
            {
                bOK = false;
                try
                {
                    role.DeleteUser(ouser);
                    bOK = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ошибка удаления пользователя !\n" + ex.Message);
                }
            }

            if (bOK)
            {
                ReloadListMembers();
                MessageBox.Show("Пользователь удален.");
            }
        }
Пример #2
0
        private void popMenuAddUser_Click(object sender, EventArgs e)
        {
            frmGetDomainUser frmAD = new frmGetDomainUser();

            frmAD.ShowDialog();
            if (frmAD.UserAD != null)
            {
                //добавить пользователя
                mycOLAProle role = (mycOLAProle)dxListRoles.SelectedItem;
                Microsoft.AnalysisServices.RoleMember usr = new Microsoft.AnalysisServices.RoleMember();
                usr.Name = frmAD.UserAD.UserDomainLogin;
                try
                {
                    role.AddUser(usr);
                    ReloadListMembers();
                    MessageBox.Show("Пользователь добавлен.");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ошибка добавления пользователя !\n" + ex.Message);
                }
            }

            frmAD.Close();
        }
        int IComparable.CompareTo(object obj)
        {
            mycOLAProle tmp = (mycOLAProle)obj;

            if (tmp != null)
            {
                return(this.Name.CompareTo(tmp.Name));
            }
            else
            {
                throw new ArgumentException("Ошибка при сравнении ролей в классе mycOLAProle");
            }
        }
        /// <summary>
        /// Для заданной роли получить всех пользователей
        /// Должно выполняться вместе в загрузкой всех ролей для БД
        /// </summary>
        /// <param name="dbRole"></param>
        private void LoadListUserFromRole(mycOLAPdb db, mycOLAProle dbRole, bool bForceLoad)
        {
            // получить всех юзеров для роли в кубе ОЛАП
            if (dbRole != null && (dbRole.listUser.Count == 0 || bForceLoad))
            {
                List <mycOLAPuser> _lstUser = new List <mycOLAPuser>();
                List <mycOLAProle> _lstRole = new List <mycOLAProle>();

                foreach (Microsoft.AnalysisServices.RoleMember mmbr in dbRole.OlapRole.Members)
                { // проходим по списку юзеров в каждой роли
                  // проверка полного списка пользователй
                  // пользователь может быть в разных ролях - ищем повторы
                  // если первый раз - добавить mmbr
                  // если нет то добавить в вписок роли а для db не надо, т.к. есть

                    mycOLAPuser usr = new mycOLAPuser(mmbr);
                    //добавить текущего пользователя в список для этой роли
                    if (dbRole.listUser.Find(u => (u.Name.ToUpper() == mmbr.Name.ToUpper())) == null)
                    {
                        dbRole.listUser.Add(usr);
                    }

                    ////Собрать полные списки ролей и пользователей
                    //_lstUser.Add(usr);
                    //_lstRole.Add(dbRole);

                    // составить список пользователей для всего куба - каждый юзер входит 1 раз
                    // Найти пользователя этого пользователя в списке по кубу
                    mycOLAPuser usrSearch = db.listUsers.Find(u => (u.Name.ToUpper() == mmbr.Name.ToUpper()));
                    if (usrSearch == null)
                    {
                        db.listUsers.Add(usr);
                    }
                    else
                    {
                        usr = usrSearch;
                    }

                    // составить список ролей для пользователя - 1 роли входит 1 раз
                    //if (!usr.listRoles.Contains<mycOLAProle>(dbRole))
                    if (usr.listRoles.Find(x => (x.Name.ToUpper() == dbRole.Name.ToUpper())) == null)
                    {
                        usr.listRoles.Add(dbRole);
                    }
                }
                //db.listUsers = _lstUser.Distinct<mycOLAPuser>().Select(a => a.Name).ToList<mycOLAPuser>();
                // UserList = UserList.Distinct().Select(a => a.Name).ToList();
            }
        }
        /// <summary>
        /// Получить для базы список всех ролей
        /// </summary>
        /// <param name="dbName"></param>
        public void LoadListRoleUserFromDB(string dbName, bool bForceLoad)
        {
            // Загрузка ролей и пользователей происходит 1 раз через обращение к базе
            // второй раз используется уже загруженный список
            // bForceLoad - если требуется еще раз перезагрузить списки из базы

            //Проверка наличия, что  база загружена
            _dbSelected = dbSelect(dbName);
            // получить все роли для базы и для каждой роли загрузить всех юзеров
            if (_dbSelected != null && (_dbSelected.listRole.Count == 0 || bForceLoad))
            {
                _dbSelected.listRole = new List <mycOLAProle>();

                foreach (Microsoft.AnalysisServices.Role dbRole in _dbSelected.DBolap.Roles)
                {
                    mycOLAProle roleSelected = new mycOLAProle();
                    roleSelected.OlapRole = dbRole;
                    roleSelected.DBname   = _dbSelected.Name;
                    _dbSelected.listRole.Add(roleSelected);
                    // Загрузить юзеров для этой роли
                    LoadListUserFromRole(_dbSelected, roleSelected, bForceLoad);
                }
            }
        }