public static DTOStatus CreateUserMethod(DTOUser DTOUser, IHostingEnvironment _hostEnvironment, UserManager <ApplicationUser> _userManager, SignInManager <ApplicationUser> _signInManager, string ConnectionString, string CurrentHostLocation, string strCurrentUser) { // Status to return DTOStatus objDTOStatus = new DTOStatus(); objDTOStatus.StatusMessage = "Failure"; objDTOStatus.Success = false; try { RegisterDTO objRegisterDTO = new RegisterDTO(); objRegisterDTO.userName = DTOUser.userName; objRegisterDTO.email = DTOUser.email; objRegisterDTO.firstName = DTOUser.firstName; objRegisterDTO.lastName = DTOUser.lastName; objRegisterDTO.password = DTOUser.password; var objRegisterStatus = RegisterController.RegisterUser(objRegisterDTO, ConnectionString, _hostEnvironment, _userManager, _signInManager, CurrentHostLocation, true, false); if (!objRegisterStatus.isSuccessful) { // Registration was not successful objDTOStatus.StatusMessage = objRegisterStatus.status; return(objDTOStatus); } var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>(); optionsBuilder.UseSqlServer(ConnectionString); using (var context = new ADefHelpDeskContext(optionsBuilder.Options)) { // Get User var objDTOUser = (from objuser in context.AdefHelpDeskUsers where objuser.Username == DTOUser.userName select objuser).FirstOrDefault(); if (objDTOUser != null) { // Update remaining fields objDTOUser.IsSuperUser = DTOUser.isSuperUser; } // Add the Roles for the user int UserId = objDTOUser.UserId; foreach (var itemRole in DTOUser.userRoles) { AdefHelpDeskUserRoles objRoleDTO = new AdefHelpDeskUserRoles(); objRoleDTO.RoleId = itemRole.iD; objRoleDTO.UserId = UserId; context.AdefHelpDeskUserRoles.Add(objRoleDTO); } context.SaveChanges(); } } catch (Exception ex) { objDTOStatus.StatusMessage = ex.GetBaseException().Message; objDTOStatus.Success = false; return(objDTOStatus); } objDTOStatus.StatusMessage = ""; objDTOStatus.Success = true; return(objDTOStatus); }
public static DTOStatus UpdateUser(int id, DTOUser DTOUser, UserManager <ApplicationUser> _userManager, string ConnectionString, string strCurrentUser) { // Status to return DTOStatus objDTOStatus = new DTOStatus(); objDTOStatus.StatusMessage = "Failure"; objDTOStatus.Success = false; #region Validation **************************** EmailValidation objEmailValidation = new EmailValidation(); if (!objEmailValidation.IsValidEmail(DTOUser.email)) { objDTOStatus.StatusMessage = "This Email is not valid."; objDTOStatus.Success = false; return(objDTOStatus); } if ((DTOUser.firstName == null) || (DTOUser.firstName.Length < 1)) { objDTOStatus.StatusMessage = "This First Name is not long enough."; objDTOStatus.Success = false; return(objDTOStatus); } if ((DTOUser.lastName == null) || (DTOUser.lastName.Length < 1)) { objDTOStatus.StatusMessage = "This Last Name is not long enough."; objDTOStatus.Success = false; return(objDTOStatus); } #endregion var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>(); optionsBuilder.UseSqlServer(ConnectionString); using (var context = new ADefHelpDeskContext(optionsBuilder.Options)) { // Get User var objDTOUser = (from objuser in context.AdefHelpDeskUsers .Include(role => role.AdefHelpDeskUserRoles) where objuser.UserId == id select objuser).FirstOrDefault(); if (objDTOUser == null) { objDTOStatus.StatusMessage = "Not Found"; objDTOStatus.Success = false; return(objDTOStatus); } // Check the Email var objAdefHelpDeskEmail = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers where AdefHelpDeskUsers.Email.ToLower() == DTOUser.email.ToLower() where AdefHelpDeskUsers.Username != DTOUser.userName select AdefHelpDeskUsers).FirstOrDefault(); if (objAdefHelpDeskEmail != null) { // User is already taken objDTOStatus.StatusMessage = "This Email address is already taken."; objDTOStatus.Success = false; return(objDTOStatus); } try { // Update the user objDTOUser.FirstName = DTOUser.firstName; objDTOUser.LastName = DTOUser.lastName; objDTOUser.Email = DTOUser.email; objDTOUser.VerificationCode = null; // Admin updating user always clears verification code // Cannot change your own IsSuperUser status if (objDTOUser.Username != strCurrentUser) { objDTOUser.IsSuperUser = DTOUser.isSuperUser; } context.SaveChanges(); } catch (Exception ex) { objDTOStatus.Success = false; objDTOStatus.StatusMessage = ex.GetBaseException().Message; return(objDTOStatus); } // Delete all roles -- so we can add the new ones foreach (var itemRole in objDTOUser.AdefHelpDeskUserRoles) { var objUserRole = context.AdefHelpDeskUserRoles.SingleOrDefault(x => x.UserRoleId == itemRole.UserRoleId); context.AdefHelpDeskUserRoles.Remove(objUserRole); } context.SaveChanges(); // Add the Roles for the user foreach (var itemRole in DTOUser.userRoles) { AdefHelpDeskUserRoles objRoleDTO = new AdefHelpDeskUserRoles(); objRoleDTO.RoleId = itemRole.iD; objRoleDTO.UserId = DTOUser.userId; context.AdefHelpDeskUserRoles.Add(objRoleDTO); } context.SaveChanges(); } #region Migrate User (if needed) // Get user in UserManager var user = _userManager.FindByNameAsync(DTOUser.userName).Result; if (user == null) { // The user is in the old memebership API // Migrate them if ((DTOUser.password != null) && (DTOUser.password.Trim().Length < 1)) { objDTOStatus.Success = false; objDTOStatus.StatusMessage = "Account must be migrated to the new membership system -- Must supply a new password"; return(objDTOStatus); } RegisterDTO objRegisterDTO = new RegisterDTO(); objRegisterDTO.email = DTOUser.email; objRegisterDTO.firstName = DTOUser.firstName; objRegisterDTO.lastName = DTOUser.lastName; objRegisterDTO.password = DTOUser.password; objRegisterDTO.userName = DTOUser.userName; try { // Membership API user = new ApplicationUser { UserName = DTOUser.userName, Email = DTOUser.email }; var RegisterStatus = _userManager.CreateAsync(user, DTOUser.password).Result; if (!RegisterStatus.Succeeded) { // Registration was not successful if (RegisterStatus.Errors.FirstOrDefault() != null) { objDTOStatus.StatusMessage = RegisterStatus.Errors.FirstOrDefault().Description; } else { objDTOStatus.StatusMessage = "Registration error"; } objDTOStatus.Success = false; return(objDTOStatus); } } catch (Exception ex) { objDTOStatus.Success = false; objDTOStatus.StatusMessage = ex.Message; return(objDTOStatus); } } #endregion // Update Email var result = _userManager.SetEmailAsync(user, DTOUser.email).Result; // Only update password if it is passed if ((DTOUser.password != null) && (DTOUser.password.Trim().Length > 1)) { try { var resetToken = _userManager.GeneratePasswordResetTokenAsync(user).Result; var passwordResult = _userManager.ResetPasswordAsync(user, resetToken, DTOUser.password).Result; if (!passwordResult.Succeeded) { if (passwordResult.Errors.FirstOrDefault() != null) { objDTOStatus.StatusMessage = passwordResult.Errors.FirstOrDefault().Description; } else { objDTOStatus.StatusMessage = "Pasword error"; } objDTOStatus.Success = false; return(objDTOStatus); } } catch (Exception ex) { objDTOStatus.Success = false; objDTOStatus.StatusMessage = ex.Message; return(objDTOStatus); } } objDTOStatus.StatusMessage = ""; objDTOStatus.Success = true; return(objDTOStatus); }