< Summary - Syki

Information
Class: Syki.Back.Features.Academic.GetCampusCourseOfferings.GetCampusCourseOfferingsService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/GetCampusCourseOfferings/GetCampusCourseOfferingsService.cs
Tag: 21_17346963026
Line coverage
0%
Covered lines: 0
Uncovered lines: 35
Coverable lines: 35
Total lines: 50
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
Get()0%4260%

File(s)

/home/runner/work/syki/syki/Back/Features/Academic/GetCampusCourseOfferings/GetCampusCourseOfferingsService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Academic.GetCampusCourseOfferings;
 2
 03public class GetCampusCourseOfferingsService(SykiDbContext ctx) : IAcademicService
 4{
 5    public async Task<List<GetCampusCourseOfferingsOut>> Get(Guid campusId)
 6    {
 07        var courseOfferings = await ctx.CourseOfferings.AsNoTracking()
 08            .Where(x => x.InstitutionId == ctx.InstitutionId && x.CampusId == campusId)
 09            .Include(x => x.Course)
 010            .ToListAsync();
 11
 012        var ccIds = courseOfferings.ConvertAll(x => x.CourseCurriculumId);
 013        var ccDisciplines = await ctx.CourseCurriculumDisciplines.AsNoTracking()
 014            .Where(x => ccIds.Contains(x.CourseCurriculumId))
 015            .ToListAsync();
 16
 017        var disciplinesIds = ccDisciplines.ConvertAll(x => x.DisciplineId).Distinct();
 018        var disciplines = await ctx.Disciplines.Select(x => new { x.Id, x.Name })
 019            .Where(x => disciplinesIds.Contains(x.Id))
 020            .ToListAsync();
 21
 022        var academicPeriod = await ctx.GetCurrentAcademicPeriod(ctx.InstitutionId);
 23
 024        var result = new List<GetCampusCourseOfferingsOut>();
 25
 026        foreach (var item in courseOfferings)
 27        {
 028            var period = item.GetCurrentPeriodNumber(academicPeriod.Id);
 029            var disciplinesOut = ccDisciplines
 030                .Where(x => x.CourseCurriculumId == item.CourseCurriculumId && x.Period == period)
 031                .Select(x => new GetCampusCourseOfferingsDisciplineOut()
 032                {
 033                    Id = x.DisciplineId,
 034                    Workload = x.Workload,
 035                    Name = disciplines.First(d => d.Id == x.DisciplineId).Name,
 036                }).ToList();
 037            if (disciplinesOut.Count == 0) continue;
 38
 039            var campusCO = new GetCampusCourseOfferingsOut
 040            {
 041                CourseOfferingId = item.Id,
 042                Course = item.Course.Name,
 043                Disciplines = disciplinesOut,
 044            };
 045            result.Add(campusCO);
 46        }
 47
 048        return result;
 049    }
 50}