< Summary - Syki

Information
Class: Syki.Back.Features.Disciplines.GetDisciplines.GetDisciplinesService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Disciplines/GetDisciplines/GetDisciplinesService.cs
Tag: 56_26538939494
Line coverage
100%
Covered lines: 17
Uncovered lines: 0
Coverable lines: 17
Total lines: 28
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/Disciplines/GetDisciplines/GetDisciplinesService.cs

#LineLine coverage
 1namespace Syki.Back.Features.Disciplines.GetDisciplines;
 2
 23public class GetDisciplinesService(SykiDbContext ctx) : ISykiService
 4{
 5    public async Task<GetDisciplinesOut> Get()
 6    {
 27        var disciplines = await ctx.Disciplines.AsNoTracking()
 28            .Where(d => d.InstitutionId == ctx.RequestUser.InstitutionId)
 29            .OrderBy(d => d.Name)
 210            .ToListAsync();
 11
 612        var ids = disciplines.Select(d => d.Id).ToHashSet();
 13
 614        var result = disciplines.ConvertAll(d => d.ToGetDisciplinesItemOut());
 15
 216        var courses = await ctx.CoursesDisciplines.AsNoTracking()
 217            .Where(c => ids.Count == 0 || ids.Contains(c.DisciplineId))
 218            .ToListAsync();
 619        result.ForEach(x => x.Courses = courses.Count(c => c.DisciplineId == x.Id));
 20
 221        var teachers = await ctx.TeachersDisciplines.AsNoTracking()
 222            .Where(d => ids.Count == 0 || ids.Contains(d.DisciplineId))
 223            .ToListAsync();
 624        result.ForEach(x => x.Teachers = teachers.Count(t => t.DisciplineId == x.Id));
 25
 226        return new GetDisciplinesOut { Total = result.Count, Items = result };
 227    }
 28}