public ActionResult CreateUser(CreateUserVM user) { if (ModelState.IsValid) { using (var db = new ADWebDB()) { ADWeb.Core.Models.User newUser = Mapper.Map <User>(user); ADDomain domain = new ADDomain(); // Get User Template Settings so that we can use it to create // the user. UserTemplate userTemplate = db.UserTemplate .Find(user.UserTemplateID); UserTemplateSettings userTemplateSettings = new UserTemplateSettings(); userTemplateSettings.ChangePasswordAtNextLogon = userTemplate.ChangePasswordAtNextLogon; userTemplateSettings.UserCannotChangePassword = userTemplate.UserCannotChangePassword; userTemplateSettings.PasswordNeverExpires = userTemplate.PasswordNeverExpires; userTemplateSettings.AccountExpires = userTemplate.AccountExpires; userTemplateSettings.ExpirationRange = userTemplate.ExpirationRange; userTemplateSettings.ExpirationValue = userTemplate.ExpirationValue; userTemplateSettings.DomainOU = userTemplate.DomainOU.DistinguishedName; // When getting the groups associated with a user template, we // are only interested in getting those groups that are active (i.e. // they have not been removed by the admins of the application). If this is // not done, then there will be an error if a group happens to have been // added, removed and then added again by one of the administrators. This should // be a rare occurrance, but we have to check just to make sure no errors occur // when creating user accounts. foreach (var group in userTemplate.Groups.Where(u => u.Enabled == true).ToList()) { userTemplateSettings.Groups.Add(group.Name); } domain.CreateUserWithTemplate(newUser, userTemplateSettings); ADUser currentUser = domain.GetUserByID(User.Identity.Name); // Insert the account to the Database. Note: we are only // interested in basic information DomainUser newDomainUser = new DomainUser(); newDomainUser.DateCreated = DateTime.Now; newDomainUser.CreatedBy = currentUser.GivenName + " " + currentUser.Surname; newDomainUser.Username = newUser.Username; db.DomainUsers.Add(newDomainUser); db.SaveChanges(); TempData["user_created_successfully"] = newUser.FirstName + " " + newUser.LastName + " has been created successfully!"; return(RedirectToAction("ViewUser", new { user = user.Username })); } } return(View()); }