< Summary - Estud

Information
Class: Estud.Back.Features.Classes.GetClasses.GetClassesService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Classes/GetClasses/GetClassesService.cs
Tag: 114_29044117136
Line coverage
96%
Covered lines: 30
Uncovered lines: 1
Coverable lines: 31
Total lines: 43
Line coverage: 96.7%
Branch coverage
58%
Covered branches: 14
Total branches: 24
Branch coverage: 58.3%
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()50%101094.11%

File(s)

/home/runner/work/syki/syki/Back/Features/Classes/GetClasses/GetClassesService.cs

#LineLine coverage
 1namespace Estud.Back.Features.Classes.GetClasses;
 2
 83public class GetClassesService(EstudDbContext ctx) : IEstudService
 4{
 5    public async Task<GetClassesOut> Get(GetAcademicClassesIn query)
 6    {
 87        var institutionId = ctx.RequestUser.InstitutionId;
 8
 89        var classes = await ctx.Classes.AsNoTracking()
 810            .Include(c => c.Discipline)
 811            .Include(c => c.Teacher)
 812            .Include(c => c.Period)
 813            .Include(c => c.Schedules)
 814            .Where(c => c.InstitutionId == institutionId)
 815            .ToListAsync();
 16
 817        var today = DateOnly.FromDateTime(DateTime.UtcNow);
 2818        foreach (var @class in classes)
 19        {
 620            if (@class.Status == ClassStatus.OnEnrollment && @class.Period?.EndAt < today)
 021                @class.Status = ClassStatus.AwaitingStart;
 22        }
 23
 824        var statusFilter = query?.Status;
 825        var items = classes
 626            .Where(c => statusFilter == null || c.Status == statusFilter)
 427            .Select(c => new GetClassesItemOut
 428            {
 429                Id = c.Id,
 430                Discipline = c.Discipline?.Name ?? "",
 431                Teacher = c.Teacher?.Name ?? "",
 432                Period = c.Period?.Name ?? "",
 433                Vacancies = c.Vacancies,
 434                Status = c.Status,
 435                Schedules = c.Schedules
 436                    .Select(s => new ScheduleOut(s.Day, s.Start, s.End))
 437                    .ToList(),
 438            })
 839            .ToList();
 40
 841        return new GetClassesOut { Total = items.Count, Items = items };
 842    }
 43}