internal override async Task <User> RegisterUser(string username, string email, string password) { var transaction = _context.Database.BeginTransaction(); try { IdentityUser user = new IdentityUser { UserName = username, Email = email }; IdentityResult result = await _userManager.CreateAsync(user, password); if (!result.Succeeded) { List <String> errors = new List <String>(); foreach (var error in result.Errors) { errors.Add(error.Description); } throw new ConduitValidationException(errors); } _userPersonalizationRepository.CreateUserPersonalizationForId(user.Id); _context.SaveChanges(); transaction.Commit(); return(new User(email, GenerateJWTToken(user), username, null, null)); } catch (Exception ex) { transaction.Rollback(); throw ex; } }