/// <summary> /// Sets a single department information for all users in papercut. /// </summary> internal static void SetUsersSingleDepartmentInfo(ServerCommandProxy serverProxy, LdapUser[] ldapUsers, int targetDepartmentField) { string fieldToUpdate = PaperCutProxyWrapper.ResolveDepartmentField(targetDepartmentField); try { for (int i = 0; i < ldapUsers.Length; i++) { serverProxy.SetUserProperty(ldapUsers[i].Username, fieldToUpdate, ldapUsers[i].DepartmentName); Console.WriteLine("#{0}/{1} updated username: {2}, new department: {3}", i + 1, ldapUsers.Length, ldapUsers[i].Username, ldapUsers[i].DepartmentName); } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } Console.WriteLine("\n########################################\r\n"); }
/// <summary> /// Retrieves the department information for users from Active Directory. /// </summary> /// /// <returns> /// A list of LdapUsers containing the usernames, full names, /// department names or department numbers. /// </returns> public LdapUser[] retrieveUserDepartment(PpcUser[] ppcUsers, string department) { LdapUser[] ldapUsers = new LdapUser[ppcUsers.Length]; DirectoryEntry ldapConnection = createDirectoryEntry(); DirectorySearcher ldapSearch = new DirectorySearcher(ldapConnection); string[] requiredProperties = new string[] { "cn", department}; foreach (String property in requiredProperties) { ldapSearch.PropertiesToLoad.Add(property); } for (int i = 0; i < ldapUsers.Length; i++) { ldapUsers[i] = new LdapUser(); ldapUsers[i].Username = ppcUsers[i].Username; try { ldapSearch.Filter = "(sAMAccountName=" + ldapUsers[i].Username + ")"; SearchResult result = ldapSearch.FindOne(); if (result != null) { try { ldapUsers[i].FullName = result.Properties[requiredProperties[0]][0].ToString(); ldapUsers[i].DepartmentName = result.Properties[requiredProperties[1]][0].ToString(); } catch (Exception) { Console.WriteLine("Incomplete AD information for user: {0}", ldapUsers[i].Username); } } else { Console.WriteLine("Nothing retrieved."); } } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } } return ldapUsers; }