< Summary - Estud

Information
Class: Estud.Back.Features.Users.RegisterUser.RegisterUserService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Users/RegisterUser/RegisterUserService.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 19
Uncovered lines: 0
Coverable lines: 19
Total lines: 39
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%
.ctor()100%11100%
.cctor()100%11100%
Register()100%44100%

File(s)

/home/runner/work/syki/syki/Back/Features/Users/RegisterUser/RegisterUserService.cs

#LineLine coverage
 1using Estud.Back.Domain.Identity;
 2using Estud.Back.Domain.Institutions;
 3
 4namespace Estud.Back.Features.Users.RegisterUser;
 5
 7706public class RegisterUserService(EstudDbContext ctx, UserManager<EstudUser> userManager) : IEstudService
 7{
 8    private class Validator : AbstractValidator<RegisterUserIn>
 9    {
 210        public Validator()
 11        {
 77212            RuleFor(x => x.Email).Must(x => x.IsValidEmail()).WithError(InvalidEmail.I);
 213        }
 14    }
 215    private static readonly Validator V = new();
 16
 17    public async Task<OneOf<RegisterUserOut, EstudError>> Register(RegisterUserIn data)
 18    {
 78219        if (V.Run(data, out var error)) return error;
 20
 75821        var email = data.Email.ToLowerInvariant();
 75822        var emailUsed = await ctx.Users.AnyAsync(u => u.Email == email);
 76223        if (emailUsed) return EmailAlreadyUsed.I;
 24
 75425        var institution = Institution.NewForUserRegister();
 75426        var user = new EstudUser(institution, "Seu Nome", email);
 75427        var magicLink = new MagicLink(user);
 28
 75429        var directorRole = await ctx.GetDirectorRole();
 75430        var userRole = new EstudUserRole(institution, user, directorRole.Id);
 31
 75432        ctx.AddRange(institution, magicLink, userRole);
 75433        ctx.AddCommand(institution, new SendFirstAccessMagicLinkEmailCommand(email, magicLink.Id), maxRetries: 1);
 34
 75435        await userManager.CreateAsync(user, $"Estud@{Guid.NewGuid()}");
 36
 75437        return new RegisterUserOut { Id = user.Id, InstitutionId = institution.Id };
 77038    }
 39}