public HttpResponseMessage UpdateAccount(HttpRequestMessage request, [FromBody] UserModel accountModel) { return(GetHttpResponse(request, () => { HttpResponseMessage response = null; UserSetup account = null; var securityMode = ConfigurationManager.AppSettings["SecurityMode"].ToString(); var clientcode = Convert.ToString(ConfigurationManager.AppSettings["ClientCode"]); // revalidate all steps to ensure this operation is secure against hacks if (accountModel.UserSetup.UserSetupId <= 0) { if (securityMode == "UP") { _SecurityAdapter.Initialize(); _SecurityAdapter.Register(accountModel.UserSetup.LoginID, "@password", propertyValues: new { Name = accountModel.UserSetup.Name, Email = accountModel.UserSetup.Email, MultiCompanyAccess = accountModel.UserSetup.MultiCompanyAccess, LatestConnection = DateTime.Now, Deleted = false, Active = true, CreatedBy = User.Identity.Name, CreatedOn = DateTime.Now, UpdatedBy = User.Identity.Name, UpdatedOn = DateTime.Now, Mis_Code = accountModel.UserSetup.Mis_Code, Grade = accountModel.UserSetup.Grade, ManagerID = accountModel.UserSetup.ManagerID, Segment = accountModel.UserSetup.Segment, DateEmployed = accountModel.UserSetup.DateEmployed, }); account = _CoreService.GetUserSetupByLoginID(accountModel.UserSetup.LoginID); } else { ////=========== another sample ================== //DirectoryEntry de = new DirectoryEntry(ConfigurationManager.AppSettings.Get("ADPath")); //de.Username = ConfigurationManager.AppSettings.Get("ADServiceAccount"); //de.Password = ConfigurationManager.AppSettings.Get("ADServiceAccountPassword"); //de.AuthenticationType = AuthenticationTypes.FastBind; //DirectorySearcher dssearch = new DirectorySearcher(de); //dssearch.Filter = "(CN=" + Session["username"].ToString() + ")"; //SearchResult sresult = dssearch.FindOne(); //DirectoryEntry dsresult = sresult.GetDirectoryEntry(); //lblfname.Text = dsresult.Properties["displayName"][0].ToString(); //lbltitle.Text = dsresult.Properties["title"][0].ToString(); //lbllname.Text = dsresult.Properties["telephonenumber"][0].ToString(); //lblemail.Text = dsresult.Properties["mobile"][0].ToString(); ////=========== another sample ends ============= //string connection = ConfigurationManager.ConnectionStrings["ADConnectionString"].ToString(); //appLog.InfoFormat("declaring connection with connection name: ADConnectionString"); //System.DirectoryServices.DirectorySearcher dssearch = new System.DirectoryServices.DirectorySearcher(connection); //appLog.InfoFormat("calling DirectorySearcher(x) method to pass the AD connection to the declared DirectorySearcher property: dssearch"); ////dssearch.Filter = username; ////dssearch.Filter = "fintrakbusiness"; ////dssearch.Filter = "(CN=" + Session["username"].ToString() + ")"; ////dssearch.Filter = "(CN=MyName)"; ////dssearch.Filter = "(sAMAccountName=" + txtusername.Text + ")"; //dssearch.Filter = "(sAMAccountName=" + "fintrack" + ")"; //appLog.InfoFormat("passing sAMAccountName fintrack to dssearch.Filter."); ////dssearch.Filter = "(CN=" + "fintrack" + ")"; //System.DirectoryServices.SearchResult sresult = dssearch.FindOne(); //appLog.InfoFormat("calling FindOne()"); //System.DirectoryServices.DirectoryEntry dsresult = sresult.GetDirectoryEntry(); //appLog.InfoFormat("calling GetDirectoryEntry()"); //string firstname = dsresult.Properties["givenName"][0].ToString(); //string lastname = dsresult.Properties["sn"][0].ToString(); //sn means surname ////accountModel.UserSetup.Name = firstname + " " + lastname; ////accountModel.UserSetup.Email = dsresult.Properties["mail"][0].ToString(); //////string initials = dsresult.Properties["initials"][0].ToString(); //////string displayName = dsresult.Properties["displayName"][0].ToString(); //////string mobile = dsresult.Properties["mobile"][0].ToString(); ////accountModel.UserSetup.LoginID = dsresult.Properties["sAMAccountName"][0].ToString(); //string empid = dsresult.Properties["employeeID"][0].ToString(); //string empno = dsresult.Properties["employeeNumber"][0].ToString(); ////accountModel.UserSetup.StaffID = empid + "" + empno; accountModel.UserSetup.LatestConnection = DateTime.Now; accountModel.UserSetup.Active = true; accountModel.UserSetup.Deleted = false; accountModel.UserSetup.CreatedBy = User.Identity.Name; accountModel.UserSetup.CreatedOn = DateTime.Now; accountModel.UserSetup.UpdatedBy = User.Identity.Name; accountModel.UserSetup.UpdatedOn = DateTime.Now; account = _CoreService.UpdateUserSetup(accountModel.UserSetup); } //create default role _CoreService.AssignDefaultRole(account); } else { account = _CoreService.UpdateUserSetup(accountModel.UserSetup); } var existingUserRoles = _CoreService.GetUserRoleByLoginID(account.LoginID); foreach (var userRole in existingUserRoles) { _CoreService.DeleteUserRole(userRole.UserRoleId); } foreach (var userRole in accountModel.Roles) { if (userRole.RoleId > 0) { var newUserRole = new UserRole() { UserSetupId = account.UserSetupId, RoleId = userRole.RoleId }; _CoreService.UpdateUserRole(newUserRole); } } foreach (var userRole in accountModel.ReportRoles) { if (userRole.RoleId > 0) { var newUserRole = new UserRole() { UserSetupId = account.UserSetupId, RoleId = userRole.RoleId }; _CoreService.UpdateUserRole(newUserRole); } } //Companies var existingUserCompanies = _CoreService.GetCompanyUserByLogin(account.LoginID); foreach (var userCompany in accountModel.UserCompanies) { var existingUserCompany = existingUserCompanies.Where(c => c.CompanyCode == userCompany.CompanyCode).FirstOrDefault(); if (existingUserCompany == null) { var newUserCompany = new CompanyUser() { UserId = account.UserSetupId, CompanyCode = userCompany.CompanyCode, Active = true }; if (userCompany.IsChecked) { _CoreService.UpdateCompanyUser(newUserCompany); } } else { if (!userCompany.IsChecked) { _CoreService.DeleteCompanyUser(existingUserCompany.CompanyUserId); } } } response = request.CreateResponse <UserSetup>(HttpStatusCode.OK, account); return response; })); }