< Summary - Syki

Information
Class: Syki.Back.Features.Cross.SeedInstitutionData.SeedInstitutionClassesCommandHandler
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Cross/SeedInstitutionData/SeedInstitutionClassesCommand.cs
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 24
Coverable lines: 24
Total lines: 41
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
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%
Handle()0%620%

File(s)

/home/runner/work/syki/syki/Back/Features/Cross/SeedInstitutionData/SeedInstitutionClassesCommand.cs

#LineLine coverage
 1using Syki.Back.Features.Academic.CreateClass;
 2
 3namespace Syki.Back.Features.Cross.SeedInstitutionData;
 4
 5[CommandDescription("Realizar seed de turmas da instituição")]
 6public record SeedInstitutionClassesCommand(Guid InstitutionId) : ICommand;
 7
 08public class SeedInstitutionClassesCommandHandler(
 09    SykiDbContext ctx,
 010    CreateClassService createClassService) : ICommandHandler<SeedInstitutionClassesCommand>
 11{
 12    public async Task Handle(CommandId commandId, SeedInstitutionClassesCommand command)
 13    {
 014        var id = command.InstitutionId;
 015        var academicPeriod = $"{DateTime.UtcNow.Year}.1";
 16
 017        var adsCourseCurriculumId = await ctx.CourseCurriculums
 018            .Where(x => x.InstitutionId == id && x.Name.Equals("Grade ADS 1.0"))
 019            .Select(x => x.Id).FirstAsync();
 020        var adsDisciplines = await ctx.CourseCurriculumDisciplines
 021            .Where(x => x.CourseCurriculumId == adsCourseCurriculumId && x.Period == 1)
 022            .Select(x => new { x.DisciplineId })
 023            .ToListAsync();
 24
 025        var teachers = await ctx.Teachers.Where(x => x.InstitutionId == id).Select(x => x.Id).ToListAsync();
 26
 027        for (int i = 0; i < 6; i++)
 28        {
 029            await createClassService.CreateWithThrowOnError(id, new()
 030            {
 031                DisciplineId = adsDisciplines[i].DisciplineId,
 032                TeacherId = teachers.PickRandom(),
 033                Period = academicPeriod,
 034                Vacancies = new List<int>{25, 30, 35}.PickRandom(),
 035                Schedules = [new() { Day = (Day)i, Start = Hour.H19_00, End = Hour.H22_00 }]
 036            });
 37        }
 38
 039        ctx.AddCommand(id, new SeedInstitutionEnrollmentsCommand(id, adsCourseCurriculumId), parentId: commandId);
 040    }
 41}