< Summary - Syki

Information
Class: Syki.Back.Features.Periods.CreateAcademicPeriod.CreateAcademicPeriodService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Periods/CreateAcademicPeriod/CreateAcademicPeriodService.cs
Tag: 56_26538939494
Line coverage
100%
Covered lines: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 23
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%
Create()100%44100%

File(s)

/home/runner/work/syki/syki/Back/Features/Periods/CreateAcademicPeriod/CreateAcademicPeriodService.cs

#LineLine coverage
 1using Syki.Back.Domain.Periods;
 2
 3namespace Syki.Back.Features.Periods.CreateAcademicPeriod;
 4
 405public class CreateAcademicPeriodService(SykiDbContext ctx) : ISykiService
 6{
 7    public async Task<OneOf<CreateAcademicPeriodOut, SykiError>> Create(CreateAcademicPeriodIn data)
 8    {
 409        var institutionId = ctx.RequestUser.InstitutionId;
 10
 4011        var result = AcademicPeriod.New(institutionId, data.Name, data.StartAt, data.EndAt);
 6812        if (result.IsError) return result.Error;
 13
 1214        var period = result.Success;
 15
 1216        var periodExists = await ctx.AcademicPeriods.AnyAsync(p => p.InstitutionId == institutionId && p.Name == period.
 1417        if (periodExists) return AcademicPeriodAlreadyExists.I;
 18
 1019        await ctx.SaveChangesAsync(period);
 20
 1021        return new CreateAcademicPeriodOut { Id = period.Id };
 4022    }
 23}