< Summary - Syki

Information
Class: Syki.Back.Features.Academic.CreateStudent.CreateStudentService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/CreateStudent/CreateStudentService.cs
Tag: 4_16869239191
Line coverage
87%
Covered lines: 14
Uncovered lines: 2
Coverable lines: 16
Total lines: 33
Line coverage: 87.5%
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%
Create()100%44100%
CreateWithThrowOnError()100%210%

File(s)

/home/runner/work/syki/syki/Back/Features/Academic/CreateStudent/CreateStudentService.cs

#LineLine coverage
 1using Syki.Back.Features.Cross.CreateUser;
 2
 3namespace Syki.Back.Features.Academic.CreateStudent;
 4
 1805public class CreateStudentService(SykiDbContext ctx, CreateUserService createService, HybridCache cache) : IAcademicServ
 6{
 7    public async Task<OneOf<StudentOut, SykiError>> Create(Guid institutionId, CreateStudentIn data)
 8    {
 1809        var courseOfferingExists = await ctx.CourseOfferings
 18010            .AnyAsync(o => o.InstitutionId == institutionId && o.Id == data.CourseOfferingId);
 18211        if (!courseOfferingExists) return new CourseOfferingNotFound();
 12
 17813        var userIn = CreateUserIn.NewStudent(institutionId, data.Name, data.Email, data.PhoneNumber);
 17814        var result = await createService.Create(userIn);
 15
 18216        if (result.IsError) return result.Error;
 17
 17418        var user = result.Success;
 17419        var student = new SykiStudent(user.Id, institutionId, data.Name, data.CourseOfferingId);
 17420        ctx.Add(student);
 21
 17422        await ctx.SaveChangesAsync();
 23
 17424        await cache.RemoveAsync($"students:{institutionId}");
 25
 17426        return student.ToOut();
 18027    }
 28
 29    public async Task CreateWithThrowOnError(Guid institutionId, CreateStudentIn data)
 30    {
 031        (await Create(institutionId, data)).ThrowOnError();
 032    }
 33}