Exemplo n.º 1
0
        public static async Task <List <User> > AsyncSearchUsers(string Name = "", string TelephoneNumber = "", string ComputerName = "")
        {
            var UserList = new List <User>();

            await Task.Run(() =>
            {
                string FilterString = "";

                if (Name != "" && Name != null)
                {
                    FilterString += "(displayname=*" + Name + "*)";
                }
                if (TelephoneNumber != "" && TelephoneNumber != null)
                {
                    FilterString += "(telephonenumber=" + TelephoneNumber + "*)";
                }
                if (ComputerName != "" && ComputerName != null)
                {
                    FilterString += "(wwwhomepage=" + ComputerName + "*)";
                }

                Search.Filter = "(&(ObjectClass=User)(givenname=*)" + FilterString + ")";

                SearchResultCollection result = Search.FindAll();
                if (result.Count > Properties.Settings.Default.MaxSearchUser)
                {
                    throw new Exception("Найдено более " + Properties.Settings.Default.MaxSearchUser + " пользователей, уточните параметры поиска.");
                }

                for (int i = 0; i < result.Count; i++)
                {
                    User User = new User(GetUserProperties(result[i], "displayname"));

                    //Если userAccountControl == 514 то аккаунт не true, т.е. отключен
                    User.EnableAccount = !(GetUserProperties(result[i], "userAccountControl") == "514");

                    //Достаем номер телефона
                    User.UserName = GetUserProperties(result[i], "samaccountname");
                    //Достаем номер телефона
                    User.TelephoneNumber = GetUserProperties(result[i], "telephonenumber");
                    //Достаем имя компьютера
                    User.ComputerName = GetUserProperties(result[i], "wwwhomepage");
                    //Достаем описание пользователя
                    User.Description = GetUserProperties(result[i], "description");

                    //Достаем Axapta логин пользователя
                    User.AxaptaId = SQLiteBase.GetUserAxaptaName(User.UserName);

                    //Ищем есть ли такой компьютер на карте
                    if (User.ComputerName != null & User.ComputerName.Length > 0)
                    {
                        if (SQLiteBase.GetLocationsByName(User.ComputerName) != null)
                        {
                            User.IsAddToMap = true;
                        }
                    }

                    foreach (string a in (GetUserProperties(result[i], "distinguishedname")).Split(','))
                    {
                        if (a.Contains("OU"))
                        {
                            User.DomainOU = (a.Replace("OU=", "")) + "->" + User.DomainOU;
                        }
                    }
                    User.DomainOU = User.DomainOU.Remove(User.DomainOU.Length - 2);
                    User.DomainOU = "LDF->" + User.DomainOU;


                    //Добавляем Пользователя в список найденных пользователей
                    UserList.Add(User);
                }
            });

            return(UserList);
        }
Exemplo n.º 2
0
        public static async void searchUsers(ObservableCollection <User> UsersList, string Name = "", string TelephoneNumber = "", string ComputerName = "")
        {
            string FilterString = "";

            if (Name != "" && Name != null)
            {
                FilterString += "(displayname=*" + Name + "*)";
            }
            if (TelephoneNumber != "" && TelephoneNumber != null)
            {
                FilterString += "(telephonenumber=" + TelephoneNumber + "*)";
            }
            if (ComputerName != "" && ComputerName != null)
            {
                FilterString += "(wwwhomepage=" + ComputerName + "*)";
            }

            Search.Filter = "(&(ObjectClass=User)(givenname=*)" + FilterString + ")";

            SearchResultCollection result = Search.FindAll();

            if (result.Count > Properties.Settings.Default.MaxSearchUser)
            {
                throw new Exception("количество найденных пользователей больше 30");
            }
            await Task.Run(() =>
            {
                for (int i = 0; i < result.Count; i++)
                {
                    User User = new User(GetUserProperties(result[i], "displayname"));

                    //Если userAccountControl == 514 то аккаунт не true, т.е. отключен
                    User.EnableAccount = !(GetUserProperties(result[i], "userAccountControl") == "514");

                    //Достаем номер телефона
                    User.UserName = GetUserProperties(result[i], "samaccountname");
                    //Достаем номер телефона
                    User.TelephoneNumber = GetUserProperties(result[i], "telephonenumber");
                    //Достаем имя компьютера
                    User.ComputerName = GetUserProperties(result[i], "wwwhomepage");
                    //Достаем описание пользователя
                    User.Description = GetUserProperties(result[i], "description");

                    //Достаем Axapta логин пользователя
                    User.AxaptaId = SQLiteBase.GetUserAxaptaName(User.UserName);

                    foreach (string a in (GetUserProperties(result[i], "distinguishedname")).Split(','))
                    {
                        if (a.Contains("OU"))
                        {
                            User.DomainOU = (a.Replace("OU=", "")) + "->" + User.DomainOU;
                        }
                    }
                    User.DomainOU = User.DomainOU.Remove(User.DomainOU.Length - 2);
                    User.DomainOU = "LDF->" + User.DomainOU;

                    Application.Current.Dispatcher.BeginInvoke((Action) delegate()
                    {
                        //Добавляем Пользователя в список найденных пользователей
                        UsersList.Add(User);
                    });
                }
            });
        }