public ControlMaps() { InitializeComponent(); this.DataContext = this; Application.Current.MainWindow.MouseMove += Image_MouseMove; Application.Current.MainWindow.MouseUp += Image_MouseLeftButtonUp; ArrayMapObjects = SQLiteBase.GetObjectMap(2); MapId = 2; typeObjects = SQLiteBase.GetTypeObjectMap(); //Делаем запрос на получение основных пунктов меню, -1 - значит поле parent_id отсутствует. Locations = SQLiteBase.GetMenuItem(-1); foreach (MenuItemLocations MainItem in Locations) { //Список элементов который будет пополнятся элементами меню для поиска дочерних элементов List <MenuItemLocations> ochered = new List <MenuItemLocations>(); //Добавляем в очередь главное меню ochered.Add(MainItem); for (int i = 0; ochered.Count > i; i++) { //Получаем дочерние элементы из базы List <MenuItemLocations> ChildrenElementsList = SQLiteBase.GetMenuItem(ochered[i].Id); ochered[i].Command = SetLocation; ochered[i].CommandParameter = ochered[i].Id; //Если дочерние элементы существуют if (ChildrenElementsList != null) { //Добавляем в меню по которому сейчас проходим найденные дочерние элементы ochered[i].ItemsSource = ChildrenElementsList; //Проходимся по ним и добавляем в очередь на поиск дочерних элементов foreach (MenuItemLocations ChildrenElement in ChildrenElementsList) { ochered.Add(ChildrenElement); } } //Если дочерние элементы отсутствуют, значит это последний элемент в списке, навесим на него команду else { } } } }
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); }
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); }); } }); }