| | 1 | | using Syki.Back.Features.Academic.CreateClass; |
| | 2 | |
|
| | 3 | | namespace Syki.Back.Features.Cross.SeedInstitutionData; |
| | 4 | |
|
| | 5 | | [CommandDescription("Realizar seed de turmas da instituição")] |
| | 6 | | public record SeedInstitutionClassesCommand(Guid InstitutionId) : ICommand; |
| | 7 | |
|
| 0 | 8 | | public class SeedInstitutionClassesCommandHandler( |
| 0 | 9 | | SykiDbContext ctx, |
| 0 | 10 | | CreateClassService createClassService) : ICommandHandler<SeedInstitutionClassesCommand> |
| | 11 | | { |
| | 12 | | public async Task Handle(CommandId commandId, SeedInstitutionClassesCommand command) |
| | 13 | | { |
| 0 | 14 | | var id = command.InstitutionId; |
| 0 | 15 | | var academicPeriod = $"{DateTime.UtcNow.Year}.1"; |
| | 16 | |
|
| 0 | 17 | | var adsCourseCurriculumId = await ctx.CourseCurriculums |
| 0 | 18 | | .Where(x => x.InstitutionId == id && x.Name.Equals("Grade ADS 1.0")) |
| 0 | 19 | | .Select(x => x.Id).FirstAsync(); |
| 0 | 20 | | var adsDisciplines = await ctx.CourseCurriculumDisciplines |
| 0 | 21 | | .Where(x => x.CourseCurriculumId == adsCourseCurriculumId && x.Period == 1) |
| 0 | 22 | | .Select(x => new { x.DisciplineId }) |
| 0 | 23 | | .ToListAsync(); |
| | 24 | |
|
| 0 | 25 | | var teachers = await ctx.Teachers.Where(x => x.InstitutionId == id).Select(x => x.Id).ToListAsync(); |
| | 26 | |
|
| 0 | 27 | | for (int i = 0; i < 6; i++) |
| | 28 | | { |
| 0 | 29 | | await createClassService.CreateWithThrowOnError(id, new() |
| 0 | 30 | | { |
| 0 | 31 | | DisciplineId = adsDisciplines[i].DisciplineId, |
| 0 | 32 | | TeacherId = teachers.PickRandom(), |
| 0 | 33 | | Period = academicPeriod, |
| 0 | 34 | | Vacancies = new List<int>{25, 30, 35}.PickRandom(), |
| 0 | 35 | | Schedules = [new() { Day = (Day)i, Start = Hour.H19_00, End = Hour.H22_00 }] |
| 0 | 36 | | }); |
| | 37 | | } |
| | 38 | |
|
| 0 | 39 | | ctx.AddCommand(id, new SeedInstitutionEnrollmentsCommand(id, adsCourseCurriculumId), parentId: commandId); |
| 0 | 40 | | } |
| | 41 | | } |