public class LDAP { private string _login; private string title; private string name; private string mail; private string id; private string firstname; private string lastname; private string employeetype; private string description; private string manageruid; private string employeenumber; private string telephonenumber; public string Login { get { return _login; } } public string Title { get { return title; } } public string Name { get { return name; } } public string Mail { get { return mail; } } public string ID { get { return id; } } public string FirstName { get { return firstname; } } public string LastName { get { return lastname; } } public string EmployeeType { get { return employeetype; } } public string Description { get { return description; } } public string ManagerUID { get { return manageruid; } } public string EmployeeNumber { get { return employeenumber; } } public string TelephoneNumber { get { return telephonenumber; } } public LDAP(string login) { var searchRoot = new DirectoryEntry("LDAP://myldapaddress.com/ou=active,ou=employees,ou=people,o=domain.com", null, null, AuthenticationTypes.Secure); //string full_name = ADEntry.Properties["FullName"].Value.ToString(); var ds = new DirectorySearcher(searchRoot, "(name=" + login + ")", new string[] { "title", "name", "mail", "cn", "employeeNumber", "givenName", "sn", "employeeType", "description", "manageruid", "employeeNumber", "telephoneNumber" }); var sr = ds.FindOne(); if (sr == null) return; var de = sr.GetDirectoryEntry(); _login = login; name = de.Properties["cn"].Value.ToString(); mail = de.Properties["mail"].Value.ToString(); //var titel = de.Properties["title"].Value.ToString().Replace('.',' '); //var splits = titel.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries); //foreach (var a in splits.Select(split => split.ToLower())) //{ // for (var i = 0; i < a.Length; i++) // { // if (i == 0) // { // title += a[i].ToString(CultureInfo.InvariantCulture).ToUpper(); // } // else title += a[i]; // } // title += " "; //} title = Strings.ToEachCaps(de.Properties["title"].Value.ToString().Replace('.', ' ')); id = de.Properties["employeeNumber"].Value.ToString(); firstname = de.Properties["givenName"].Value.ToString(); lastname = de.Properties["sn"].Value.ToString(); employeetype = de.Properties["employeeType"].Value.ToString(); description = de.Properties["description"].Value.ToString(); manageruid = de.Properties["manageruid"].Value.ToString(); employeenumber = de.Properties["employeeNumber"].Value.ToString(); telephonenumber = de.Properties["telephoneNumber"].Value.ToString(); } public LDAP(string login, List fields) { var searchRoot = new DirectoryEntry("LDAP://myldapaddress.com/ou=active,ou=employees,ou=people,o=domain.com", null, null, AuthenticationTypes.Secure); var ds = new DirectorySearcher(searchRoot, "(name=" + login + ")", new string[] { "title", "name", "mail", "cn", "employeeNumber", "givenName", "sn", "employeeType", "description", "manageruid", "employeeNumber", "telephoneNumber" }); var sr = ds.FindOne(); if (sr == null) return; var de = sr.GetDirectoryEntry(); _login = login; if (fields.Contains("FirstName")) { firstname = de.Properties["givenName"].Value.ToString(); } if (fields.Contains("LastName")) { lastname = de.Properties["sn"].Value.ToString(); } if (fields.Contains("Name")) { name = de.Properties["cn"].Value.ToString(); } if (fields.Contains("Mail")) { mail = de.Properties["mail"].Value.ToString(); } if (fields.Contains("Title")) { title = Strings.ToEachCaps(de.Properties["title"].Value.ToString().Replace('.', ' ')); } if (fields.Contains("ID")) { id = de.Properties["employeeNumber"].Value.ToString(); } if (fields.Contains("EmployeeType")) { employeetype = de.Properties["employeeType"].Value.ToString(); } if (fields.Contains("Description")) { description = de.Properties["description"].Value.ToString(); } if (fields.Contains("ManagerUID")) { manageruid = de.Properties["manageruid"].Value.ToString(); } if (fields.Contains("EmployeeNumber")) { employeenumber = de.Properties["employeeNumber"].Value.ToString(); } if (fields.Contains("TelephoneNumber")) { telephonenumber = de.Properties["telephoneNumber"].Value.ToString(); } } public static List GetUsers(List logins) { return logins.Select(login => new LDAP(login)).ToList(); } public static List GetFullNameTitle(List logins) { var a = new List(); a.Add("FirstName"); a.Add("LastName"); a.Add("Title"); return logins.Select(login => new LDAP(login, a)).ToList(); } public string GetFullData(char delimiter) { var result = string.Empty; result = "First Name:\t" + firstname + delimiter + "\r\n"; result += "Last Name:\t" + lastname + delimiter + "\r\n"; result += "Login:\t\t" + _login + delimiter + "\r\n"; result += "e-mail:\t\t" + mail + delimiter + "\r\n"; result += "Title:\t\t" + title + delimiter + "\r\n"; result += "Manager UID:\t" + manageruid + delimiter + "\r\n"; result += "Name:\t\t" + name + delimiter + "\r\n"; result += "ID:\t\t" + id + delimiter + "\r\n"; result += "Employee Type:\t" + employeetype + delimiter + "\r\n"; result += "Phone Number:\t" + telephonenumber + delimiter + "\r\n"; result += "Description:\t" + description + delimiter + "\r\n"; return result; } }