aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs')
-rw-r--r--BackEnd/Timeline/Services/User/RegisterCode/RegisterCodeService.cs20
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;
+ }
}
}