< Summary

Information
Class: KT.Application.RegisterService
Assembly: KT.Modules.Security
File(s): G:\NetProjects\KeepTrack\src\Modules\KT.Modules.Security\Core\Application\RegisterService.cs
Line coverage
100%
Covered lines: 19
Uncovered lines: 0
Coverable lines: 19
Total lines: 31
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
RegisterAsync()100%44100%

File(s)

G:\NetProjects\KeepTrack\src\Modules\KT.Modules.Security\Core\Application\RegisterService.cs

#LineLine coverage
 1using KT.Domain;
 2using KT.Domain.Ports;
 3using KT.ModularMonolith.Shared.Commons.Utils;
 4using KT.Modules.Security.Presentation.Contracts;
 5using KT.Modules.Security.Presentation.Dto;
 6
 7namespace KT.Application
 8{
 39    internal class RegisterService(IUserRepository userRepository) : IRegisterService
 10    {
 11        public async Task RegisterAsync(RegisterRequestDto registerRequest)
 312        {
 313            var loweredUsername = registerRequest.Username.ToLower();
 314            var loweredEmail = registerRequest.Email.ToLower();
 315            if (await userRepository.CheckExistUsername(loweredUsername))
 116                throw new InvalidOperationException("Username already registered.");
 217            if (await userRepository.CheckExistEmail(loweredEmail))
 118                throw new InvalidOperationException("Email already registered.");
 119            string hashId = HashUtils.GetSha256HexId(loweredUsername, loweredEmail);
 120            string passwordHash = BCrypt.Net.BCrypt.HashPassword(registerRequest.Password);
 121            var user = new User(
 122                hashId,
 123                registerRequest.Username,
 124                registerRequest.RealName,
 125                registerRequest.Email,
 126                passwordHash
 127            );
 128            await userRepository.SaveAsync(user);
 129        }
 30    }
 31}