< Summary - Syki

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

File(s)

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

#LineLine coverage
 1using Syki.Back.Domain.Identity;
 2using Syki.Back.Domain.Teachers;
 3
 4namespace Syki.Back.Features.Teachers.CreateTeacher;
 5
 246public class CreateTeacherService(SykiDbContext ctx, UserManager<SykiUser> userManager) : ISykiService
 7{
 8    public async Task<OneOf<CreateTeacherOut, SykiError>> Create(CreateTeacherIn data)
 9    {
 2410        var email = data.Email.ToLowerInvariant();
 2411        var emailUsed = await ctx.Users.AnyAsync(u => u.Email == email);
 2412        if (emailUsed) return EmailAlreadyUsed.I;
 13
 2414        var user = new SykiUser(ctx.RequestUser.InstitutionId, data.Name, email);
 2415        var teacher = new SykiTeacher(user, ctx.RequestUser.InstitutionId, data.Name);
 16
 2417        var institution = await ctx.Institutions.FindAsync(ctx.RequestUser.InstitutionId);
 2418        var teacherRole = await ctx.GetTeacherRole();
 2419        var userRole = new SykiUserRole(institution, user, teacherRole.Id);
 2420        ctx.AddRange(teacher, userRole);
 21
 2422        await userManager.CreateAsync(user, $"Syki@{Guid.NewGuid()}");
 23
 2424        return new CreateTeacherOut { Id = teacher.Id };
 2425    }
 26}