diff options
Diffstat (limited to 'BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs')
-rw-r--r-- | BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs b/BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs index 97a685d6..254d3747 100644 --- a/BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs +++ b/BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs @@ -14,13 +14,17 @@ namespace Timeline.Services.User.RegisterCode private readonly DatabaseContext _databaseContext; private readonly IUserService _userService; + private readonly IClock _clock; + private readonly RandomNumberGenerator _randomNumberGenerator; - public RegisterCodeService(DatabaseContext databaseContext, IUserService userService) + public RegisterCodeService(DatabaseContext databaseContext, IUserService userService, IClock clock) { _databaseContext = databaseContext; _userService = userService; + _clock = clock; + _randomNumberGenerator = RandomNumberGenerator.Create(); } @@ -99,6 +103,20 @@ namespace Timeline.Services.User.RegisterCode { throw new NotImplementedException(); } + + public async Task<UserEntity> RegisterUserWithCode(CreateUserParams userParams, string registerCode) + { + var registerCodeOwner = await GetCodeOwnerAsync(registerCode); + if (registerCodeOwner is null) + { + throw new InvalidRegisterCodeException("Register code is invalid."); + } + + var user = await _userService.CreateUserAsync(userParams); + await CreateRegisterInfoAsync(user.Id, registerCode, _clock.GetCurrentTime()); + + return user; + } } } |