public async Task <RegisterResponse> Register(RegisterRequest request) { var response = new RegisterResponse(); var username = request.EmailAddress; var duplicateResponse = await DuplicateUserCheck(new DuplicateUserCheckRequest() { EmailAddress = request.EmailAddress, Username = username }); if (duplicateResponse.Notifications.HasErrors) { response.Notifications.Add(duplicateResponse.Notifications); return(response); } int id; using (var uow = _uowFactory.GetUnitOfWork()) { id = await uow.UserRepo.CreateUser(new Repositories.DatabaseRepos.UserRepo.Models.CreateUserRequest() { Username = username, Email_Address = request.EmailAddress, Password_Hash = PasswordHelper.HashPassword(request.Password), Is_Enabled = true, Created_By = ApplicationConstants.SystemUserId, }); uow.Commit(); } _cache.Remove(CacheConstants.UserRoles); await _sessionManager.WriteSessionLogEvent(new Models.ManagerModels.Session.CreateSessionLogEventRequest() { EventKey = SessionEventKeys.UserRegistered, Info = new Dictionary <string, string>() { { "Username", username } } }); await _emailManager.SendAccountActivation(new Models.ServiceModels.Email.SendAccountActivationRequest() { UserId = id }); response.Notifications.Add($"You have been successfully registered, please check {request.EmailAddress} for a link to activate your account.", NotificationTypeEnum.Success); return(response); }