How the "department name" and "manager" attribute value could be retrieved from active directory programmatically? For ex. i will have custom newform.aspx to create some new item, in the code-behind of the custom newform.aspx i have to send email to the manager of the current user, and log the department name. So sharepoint designer activities is not suitable for my case.
The below code access current user's department and manager from AD:
SPSite _site = SPContext.Current.Site; ServerContext serverContext = ServerContext.GetContext(_site); UserProfileManager myUserProfile = new UserProfileManager(serverContext); UserProfile currentUserProfile = myUserProfile .GetUserProfile(System.Web.HttpContext.Current.User.Identity.Name); string departmentName = (string)currentUserProfile["department"].Value; string managerName = (string)currentUserProfile["manager"].Value; _site.RootWeb.Dispose(); _site.Dispose();
The other way to do this is to use DirectoryEntry and DirectorSearcher class:
Converting string to SPUser
string managerName = (string)currentUserProfile["manager"].Value; SPFieldUserValue _spUserValue = new SPFieldUserValue(myWeb, managerName); SPUser myUser = _spUserValue.User;
Note: myWeb is the object of SPWeb class
SPSite _site = SPContext.Current.Site; SPWeb myWeb = _site.OpenWeb();
Hope this helps.