< Summary - Syki

Information
Class: Syki.Back.Features.Academic.GetAcademicClasses.GetAcademicClassesService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/GetAcademicClasses/GetAcademicClassesService.cs
Tag: 4_16869239191
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 35
Line coverage: 100%
Branch coverage
81%
Covered branches: 13
Total branches: 16
Branch coverage: 81.2%
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()78.57%1414100%

File(s)

/home/runner/work/syki/syki/Back/Features/Academic/GetAcademicClasses/GetAcademicClassesService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Academic.GetAcademicClasses;
 2
 83public class GetAcademicClassesService(SykiDbContext ctx) : IAcademicService
 4{
 5    public async Task<List<ClassOut>> Get(Guid institutionId, GetAcademicClassesIn query)
 6    {
 87        var classes = await ctx.Classes.AsNoTracking()
 88            .Include(t => t.Discipline)
 89            .Include(t => t.Teacher)
 810            .Include(t => t.Schedules)
 811            .Include(t => t.Lessons)
 812                .ThenInclude(l => l.Attendances)
 813            .Where(c => c.InstitutionId == institutionId)
 814            .ToListAsync();
 15
 816        var periods = await ctx.EnrollmentPeriods.AsNoTracking().Where(x => x.InstitutionId == institutionId).ToListAsyn
 17
 1618        var ids = classes.ConvertAll(x => x.Id);
 819        var links = await ctx.ClassesStudents.AsNoTracking().Where(x => ids.Contains(x.ClassId)).ToListAsync();
 3220        foreach (var @class in classes)
 21        {
 1022            var count = links.Count(x => x.ClassId == @class.Id);
 823            @class.SetFillRatio(count);
 24
 1225            var period = periods.FirstOrDefault(x => x.Id == @class.PeriodId);
 826            if (@class.Status == ClassStatus.OnEnrollment && period?.EndAt < DateTime.UtcNow.ToDateOnly())
 27            {
 228                @class.Status = ClassStatus.AwaitingStart;
 29            }
 30        }
 31
 832        var status = query?.Status ?? null;
 2233        return classes.Where(x => status == null || x.Status == status).Select(t => t.ToOut()).ToList();
 834    }
 35}