< Summary - Syki

Information
Class: Syki.Back.Features.Academic.CreateAcademicPeriod.CreateAcademicPeriodService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/CreateAcademicPeriod/CreateAcademicPeriodService.cs
Tag: 21_17346963026
Line coverage
100%
Covered lines: 11
Uncovered lines: 0
Coverable lines: 11
Total lines: 22
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/Academic/CreateAcademicPeriod/CreateAcademicPeriodService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Academic.CreateAcademicPeriod;
 2
 5963public class CreateAcademicPeriodService(SykiDbContext ctx, HybridCache cache) : IAcademicService
 4{
 5    public async Task<OneOf<AcademicPeriodOut, SykiError>> Create(Guid institutionId, CreateAcademicPeriodIn data)
 6    {
 5967        var result = AcademicPeriod.New(data.Id, institutionId, data.StartAt, data.EndAt);
 6268        if (result.IsError) return result.Error;
 9
 56610        var period = result.Success;
 11
 56612        var periodExists = await ctx.AcademicPeriods.AnyAsync(p => p.InstitutionId == institutionId && p.Id == period.Id
 56813        if (periodExists) return new AcademicPeriodAlreadyExists();
 14
 56415        ctx.Add(period);
 56416        await ctx.SaveChangesAsync();
 17
 56418        await cache.RemoveAsync($"academicPeriods:{institutionId}");
 19
 56420        return period.ToOut();
 59621    }
 22}