< Summary - Syki

Information
Class: Syki.Back.Features.Academic.GetCampi.GetCampiService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Academic/GetCampi/GetCampiService.cs
Tag: 4_16869239191
Line coverage
100%
Covered lines: 37
Uncovered lines: 0
Coverable lines: 37
Total lines: 50
Line coverage: 100%
Branch coverage
50%
Covered branches: 3
Total branches: 6
Branch coverage: 50%
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%
get_Id()100%11100%
get_Students()100%11100%
get_Teachers()100%11100%

File(s)

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

#LineLine coverage
 1namespace Syki.Back.Features.Academic.GetCampi;
 2
 83public class GetCampiService(SykiDbContext ctx) : IAcademicService
 4{
 5    public async Task<List<CampusOut>> Get(Guid institutionId)
 6    {
 87        var campi = await ctx.Campi.AsNoTracking()
 88            .Where(c => c.InstitutionId == institutionId)
 89            .OrderBy(c => c.Name)
 810            .ToListAsync();
 11
 812        FormattableString sql = $@"
 813            SELECT
 814                c.id AS id,
 815                count(DISTINCT s.id) AS students,
 816                count(DISTINCT tc.syki_teacher_id) AS teachers
 817            FROM
 818              syki.campi c
 819            LEFT JOIN
 820              syki.teachers__campi tc ON tc.campus_id = c.id
 821            LEFT JOIN
 822                syki.course_offerings co ON co.campus_id = c.id
 823            LEFT JOIN
 824                syki.students s ON s.course_offering_id = co.id
 825            WHERE
 826                c.institution_id = {institutionId}
 827            GROUP BY
 828                c.id
 829        ";
 830        var totals = await ctx.Database.SqlQuery<CampusEnrollmentDto>(sql).ToListAsync();
 31
 832        var result = campi.ConvertAll(x =>
 833        {
 834            var campusOut = x.ToOut();
 1835            campusOut.Students = totals.FirstOrDefault(t => t.Id == x.Id)?.Students ?? 0;
 1836            campusOut.Teachers = totals.FirstOrDefault(t => t.Id == x.Id)?.Teachers ?? 0;
 837            campusOut.FillRate = campusOut.Capacity > 0 ? Math.Round(100M * (1M * campusOut.Students / (1M * campusOut.C
 838            return campusOut;
 839        });
 40
 841        return result;
 842    }
 43
 44    private class CampusEnrollmentDto
 45    {
 2046        public Guid Id { get; set; }
 847        public int Students { get; set; }
 848        public int Teachers { get; set; }
 49    }
 50}