< Summary - Syki

Information
Class: Syki.Back.Features.Cross.SeedInstitutionData.SeedInstitutionEnrollmentsCommand
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Cross/SeedInstitutionData/SeedInstitutionEnrollmentsCommand.cs
Tag: 4_16869239191
Line coverage
0%
Covered lines: 0
Uncovered lines: 1
Coverable lines: 1
Total lines: 54
Line coverage: 0%
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
get_InstitutionId()100%210%

File(s)

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

#LineLine coverage
 1using Syki.Back.Features.Academic.StartClasses;
 2using Syki.Back.Features.Student.CreateStudentEnrollment;
 3using Syki.Back.Features.Academic.UpdateEnrollmentPeriod;
 4using Syki.Back.Features.Academic.CreateEnrollmentPeriod;
 5using Syki.Back.Features.Academic.ReleaseClassesForEnrollment;
 6
 7namespace Syki.Back.Features.Cross.SeedInstitutionData;
 8
 9[CommandDescription("Realizar seed de matrículas da instituição")]
 010public record SeedInstitutionEnrollmentsCommand(Guid InstitutionId, Guid AdsCourseCurriculumId) : ICommand;
 11
 12public class SeedInstitutionEnrollmentsCommandHandler(
 13    SykiDbContext ctx,
 14    StartClassesService startClassesService,
 15    CreateEnrollmentPeriodService createEnrollmentPeriodService,
 16    UpdateEnrollmentPeriodService updateEnrollmentPeriodService,
 17    CreateStudentEnrollmentService createStudentEnrollmentService,
 18    ReleaseClassesForEnrollmentService releaseClassesForEnrollmentService) : ICommandHandler<SeedInstitutionEnrollmentsC
 19{
 20    public async Task Handle(CommandId commandId, SeedInstitutionEnrollmentsCommand command)
 21    {
 22        var id = command.InstitutionId;
 23        var today = DateTime.UtcNow.ToDateOnly();
 24        var academicPeriod = $"{today.Year}.1";
 25        var firstDay = new DateTime(today.Year, 1, 1).ToDateOnly();
 26        var lastDay = new DateTime(today.Year, 12, 31).ToDateOnly();
 27
 28        await createEnrollmentPeriodService.CreateWithThrowOnError(id, new()
 29        {
 30            Id = academicPeriod,
 31            StartAt = firstDay,
 32            EndAt = lastDay,
 33        });
 34
 35        var classes = await ctx.Classes.Where(x => x.InstitutionId == id).Select(x => x.Id).ToListAsync();
 36        await releaseClassesForEnrollmentService.ReleaseWithThrowOnError(id, new() { Classes = classes });
 37
 38        var adsCourseOfferingId = await ctx.CourseOfferings
 39            .Where(x => x.InstitutionId == id && x.CourseCurriculumId == command.AdsCourseCurriculumId)
 40            .Select(x => x.Id).FirstAsync();
 41
 42        var students = await ctx.Students.Where(x => x.CourseOfferingId == adsCourseOfferingId).Select(x => new { x.Id }
 43        foreach (var student in students)
 44        {
 45            await createStudentEnrollmentService.CreateWithThrowOnError(id, student.Id, command.AdsCourseCurriculumId, n
 46        }
 47
 48        await updateEnrollmentPeriodService.UpdateWithThrowOnError(id, academicPeriod, new() { StartAt = new DateTime(to
 49
 50        await startClassesService.StartWithThrowOnError(id, new() { Classes = classes });
 51
 52        ctx.AddCommand(id, new SeedInstitutionLessonAttendancesCommand(id), parentId: commandId);
 53    }
 54}

Methods/Properties

get_InstitutionId()