< Summary - Syki

Information
Class: Syki.Back.Features.Campi.GetCampi.GetCampiService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Campi/GetCampi/GetCampiService.cs
Tag: 81_27388714603
Line coverage
100%
Covered lines: 26
Uncovered lines: 0
Coverable lines: 26
Total lines: 39
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
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%11100%

File(s)

/home/runner/work/syki/syki/Back/Features/Campi/GetCampi/GetCampiService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Campi.GetCampi;
 2
 23public class GetCampiService(SykiDbContext ctx) : ISykiService
 4{
 5    public async Task<GetCampiOut> Get()
 6    {
 27        var institutionId = ctx.RequestUser.InstitutionId;
 8
 29        var campi = await ctx.Campi.AsNoTracking()
 210            .Where(c => c.InstitutionId == institutionId)
 211            .OrderBy(c => c.Name)
 212            .ToListAsync();
 13
 614        var ids = campi.Select(c => c.Id).ToHashSet();
 15
 216        var courseOfferings = await ctx.CourseOfferings.AsNoTracking()
 217            .Where(x => ids.Count == 0 || ids.Contains(x.CampusId))
 218            .ToListAsync();
 219        var courseOfferingsIds = courseOfferings.Select(co => co.Id).ToHashSet();
 20
 221        var students = await ctx.StudentCourseEnrollments.AsNoTracking()
 222            .Where(x => x.LeftAt == null && courseOfferingsIds.Contains(x.CourseOfferingId))
 223            .ToListAsync();
 24
 225        var teachers = await ctx.TeachersCampi.AsNoTracking()
 226            .Where(x => ids.Count == 0 || ids.Contains(x.CampusId))
 227            .ToListAsync();
 28
 229        var items = campi.ConvertAll(x =>
 230        {
 431            var teachersCount = teachers.Count(t => t.CampusId == x.Id);
 432            var campusCourseOfferings = courseOfferings.Where(co => co.CampusId == x.Id).Select(x => x.Id).ToList();
 433            var studentsCount = students.Count(s => campusCourseOfferings.Contains(s.CourseOfferingId));
 434            return x.ToGetCampiItemOut(studentsCount, teachersCount);
 235        });
 36
 237        return new GetCampiOut() { Total = items.Count, Items = items };
 238    }
 39}