< Summary - Syki

Information
Class: Syki.Back.Features.Academic.GetAcademicClass.GetAcademicClassService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/GetAcademicClass/GetAcademicClassService.cs
Tag: 4_16869239191
Line coverage
100%
Covered lines: 27
Uncovered lines: 0
Coverable lines: 27
Total lines: 45
Line coverage: 100%
Branch coverage
80%
Covered branches: 8
Total branches: 10
Branch coverage: 80%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Get()83.33%1212100%

File(s)

/home/runner/work/syki/syki/Back/Features/Academic/GetAcademicClass/GetAcademicClassService.cs

#LineLine coverage
 1using Syki.Back.Features.Teacher.GetTeacherClassStudents;
 2
 3namespace Syki.Back.Features.Academic.GetAcademicClass;
 4
 185public class GetAcademicClassService(SykiDbContext ctx, GetTeacherClassStudentsService service) : IAcademicService
 6{
 7    public async Task<OneOf<GetAcademicClassOut, SykiError>> Get(Guid institutionId, Guid id)
 8    {
 189        var @class = await ctx.Classes.AsNoTracking()
 1810            .Include(t => t.Discipline)
 1811            .Include(t => t.Teacher)
 1812            .Include(t => t.Schedules)
 1813            .Include(t => t.Lessons)
 1814                .ThenInclude(l => l.Attendances)
 1815            .Where(c => c.InstitutionId == institutionId && c.Id == id)
 1816            .FirstOrDefaultAsync();
 17
 2018        if (@class == null) return new ClassNotFound();
 19
 1620        var count = await ctx.ClassesStudents.Where(x => x.ClassId == id).CountAsync();
 1621        @class.SetFillRatio(count);
 22
 1623        var period = await ctx.EnrollmentPeriods.AsNoTracking().Where(x => x.InstitutionId == institutionId && x.Id == @
 1624        if (@class.Status == ClassStatus.OnEnrollment && period?.EndAt < DateTime.UtcNow.ToDateOnly())
 25        {
 226            @class.Status = ClassStatus.AwaitingStart;
 27        }
 28
 1629        var result = @class.ToGetAcademicClassOut();
 30
 1631        var classStudents = (await service.Get(@class.TeacherId!.Value, @class.Id)).Success;
 32
 1833        result.Students = classStudents.ConvertAll(x => new AcademicClassStudentOut
 1834        {
 1835            Id = x.Id,
 1836            Name = x.Name,
 1837            Frequency = x.Frequency,
 1838            Notes = x.Notes
 1839        });
 40
 1841        result.Frequency = result.Students.Count > 0 ? result.Students.Average(s => s.Frequency) : 0.00M;
 42
 1643        return result;
 1844    }
 45}