< Summary - Estud

Information
Class: Estud.Back.Features.Disciplines.GetDisciplines.GetDisciplinesService
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Disciplines/GetDisciplines/GetDisciplinesService.cs
Tag: 114_29044117136
Line coverage
100%
Covered lines: 23
Uncovered lines: 0
Coverable lines: 23
Total lines: 36
Line coverage: 100%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
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()75%44100%

File(s)

/home/runner/work/syki/syki/Back/Features/Disciplines/GetDisciplines/GetDisciplinesService.cs

#LineLine coverage
 1namespace Estud.Back.Features.Disciplines.GetDisciplines;
 2
 43public class GetDisciplinesService(EstudDbContext ctx) : IEstudService
 4{
 5    public async Task<GetDisciplinesOut> Get(GetDisciplinesIn query)
 6    {
 47        var disciplinesQuery = ctx.Disciplines.AsNoTracking()
 48            .Where(d => d.InstitutionId == ctx.RequestUser.InstitutionId);
 9
 410        var filter = query?.Filter;
 411        if (filter.HasValue())
 212            disciplinesQuery = disciplinesQuery.Where(d =>
 213                d.Name.ToLower().Contains(filter.ToLower()) ||
 214                d.Code.ToLower().Contains(filter.ToLower()));
 15
 416        var disciplines = await disciplinesQuery
 417            .OrderBy(d => d.Name)
 418            .ToListAsync();
 19
 1020        var ids = disciplines.Select(d => d.Id).ToHashSet();
 21
 1022        var result = disciplines.ConvertAll(d => d.ToGetDisciplinesItemOut());
 23
 424        var courses = await ctx.CoursesDisciplines.AsNoTracking()
 425            .Where(c => ids.Count == 0 || ids.Contains(c.DisciplineId))
 426            .ToListAsync();
 1027        result.ForEach(x => x.Courses = courses.Count(c => c.DisciplineId == x.Id));
 28
 429        var teachers = await ctx.TeachersDisciplines.AsNoTracking()
 430            .Where(d => ids.Count == 0 || ids.Contains(d.DisciplineId))
 431            .ToListAsync();
 1032        result.ForEach(x => x.Teachers = teachers.Count(t => t.DisciplineId == x.Id));
 33
 434        return new GetDisciplinesOut { Total = result.Count, Items = result };
 435    }
 36}