< Summary - Estud

Information
Class: Estud.Back.Features.Teachers.CreateTeacher.CreateTeacherService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Teachers/CreateTeacher/CreateTeacherService.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 26
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
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%
Create()100%22100%

File(s)

/home/runner/work/syki/syki/Back/Features/Teachers/CreateTeacher/CreateTeacherService.cs

#LineLine coverage
 1using Estud.Back.Domain.Identity;
 2using Estud.Back.Domain.Teachers;
 3
 4namespace Estud.Back.Features.Teachers.CreateTeacher;
 5
 1846public class CreateTeacherService(EstudDbContext ctx, UserManager<EstudUser> userManager) : IEstudService
 7{
 8    public async Task<OneOf<CreateTeacherOut, EstudError>> Create(CreateTeacherIn data)
 9    {
 18410        var email = data.Email.ToLowerInvariant();
 18411        var emailUsed = await ctx.Users.AnyAsync(u => u.Email == email);
 18612        if (emailUsed) return EmailAlreadyUsed.I;
 13
 18214        var user = new EstudUser(ctx.RequestUser.InstitutionId, data.Name, email);
 18215        var teacher = new EstudTeacher(user, ctx.RequestUser.InstitutionId, data.Name);
 16
 18217        var institution = await ctx.Institutions.FindAsync(ctx.RequestUser.InstitutionId);
 18218        var teacherRole = await ctx.GetTeacherRole();
 18219        var userRole = new EstudUserRole(institution, user, teacherRole.Id);
 18220        ctx.AddRange(teacher, userRole);
 21
 18222        await userManager.CreateAsync(user, $"Estud@{Guid.NewGuid()}");
 23
 18224        return new CreateTeacherOut { Id = teacher.Id };
 18425    }
 26}