< Summary - Syki

Information
Class: Syki.Back.Features.Student.GetStudentEnrollmentClasses.GetStudentEnrollmentClassesService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Student/GetStudentEnrollmentClasses/GetStudentEnrollmentClassesService.cs
Tag: 4_16869239191
Line coverage
100%
Covered lines: 35
Uncovered lines: 0
Coverable lines: 35
Total lines: 47
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
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%
Get()100%22100%

File(s)

/home/runner/work/syki/syki/Back/Features/Student/GetStudentEnrollmentClasses/GetStudentEnrollmentClassesService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Student.GetStudentEnrollmentClasses;
 2
 143public class GetStudentEnrollmentClassesService(SykiDbContext ctx) : IStudentService
 4{
 5    public async Task<List<EnrollmentClassOut>> Get(Guid institutionId, Guid userId, Guid courseCurriculumId)
 6    {
 147        var today = DateOnly.FromDateTime(DateTime.UtcNow);
 148        var enrollmentPeriod = await ctx.EnrollmentPeriods.AsNoTracking()
 149            .Where(p => p.InstitutionId == institutionId && p.StartAt <= today && p.EndAt >= today)
 1410            .FirstOrDefaultAsync();
 11
 1412        if (enrollmentPeriod == null)
 813            return [];
 14
 615        var courseCurriculum = await ctx.CourseCurriculums.Where(g => g.Id == courseCurriculumId).AsNoTracking()
 616            .Include(g => g.Links)
 617            .FirstAsync();
 7818        var ids = courseCurriculum.Links.ConvertAll(d => d.DisciplineId);
 19
 620        var classes = await ctx.Classes.AsNoTracking()
 621            .Include(t => t.Discipline)
 622            .Include(t => t.Schedules)
 623            .Include(t => t.Teacher)
 624            .Where(t => t.InstitutionId == institutionId && t.PeriodId == enrollmentPeriod.Id && t.Status == ClassStatus
 625            .ToListAsync();
 26
 627        var selecteds = await ctx.ClassesStudents.Where(x => x.SykiStudentId == userId).Select(x => x.ClassId).ToListAsy
 28
 629        var response = classes.ConvertAll(t =>
 630        {
 6631            var link = courseCurriculum.Links.First(v => v.DisciplineId == t.DisciplineId);
 832            return new EnrollmentClassOut
 833            {
 834                Id = t.Id,
 835                Discipline = t.Discipline.Name,
 836                Period = link.Period,
 837                Credits = link.Credits,
 838                Workload = link.Workload,
 839                Teacher = t.Teacher.Name,
 840                Schedules = t.Schedules.ConvertAll(h => h.ToOut()),
 841                IsSelected = selecteds.Contains(t.Id),
 842            };
 643        });
 44
 1245        return response.OrderBy(t => t.Period).ToList();
 1446    }
 47}