< Summary

Information
Class: Syki.Daemon.Tasks.SeedInstitutionDataHandler
Assembly: Daemon
File(s): /home/runner/work/syki/syki/Daemon/Tasks/SeedInstitutionDataHandler.cs
Tag: 22_11348620282
Line coverage
3%
Covered lines: 15
Uncovered lines: 375
Coverable lines: 390
Total lines: 509
Line coverage: 3.8%
Branch coverage
3%
Covered branches: 1
Total branches: 28
Branch coverage: 3.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Handle()2.94%1139.77341.47%
AddAcademicPeriods(...)100%210%
AddCampi(...)100%210%
AddCourses(...)100%210%
GetAdsDisciplines(...)100%210%
GetDireitoDisciplines(...)100%210%
GetAdsCourseCurriculum(...)100%210%
GetDireitoCourseCurriculum(...)100%210%

File(s)

/home/runner/work/syki/syki/Daemon/Tasks/SeedInstitutionDataHandler.cs

#LineLine coverage
 1using Syki.Back.Features.Academic.CreateClass;
 2using Syki.Back.Features.Academic.StartClasses;
 3using Syki.Back.Features.Academic.CreateTeacher;
 4using Syki.Back.Features.Academic.CreateStudent;
 5using Syki.Back.Features.Cross.CreateInstitution;
 6using Syki.Back.Features.Cross.FinishUserRegister;
 7using Syki.Back.Features.Teacher.AddExamGradeNote;
 8using Syki.Back.Features.Academic.FinalizeClasses;
 9using Syki.Back.Features.Academic.CreateDiscipline;
 10using Syki.Back.Features.Academic.CreateCourseOffering;
 11using Syki.Back.Features.Teacher.CreateLessonAttendance;
 12using Syki.Back.Features.Academic.CreateCourseCurriculum;
 13using Syki.Back.Features.Student.CreateStudentEnrollment;
 14using Syki.Back.Features.Academic.CreateEnrollmentPeriod;
 15using Syki.Back.Features.Academic.UpdateEnrollmentPeriod;
 16using Syki.Back.Features.Academic.ReleaseClassesForEnrollment;
 17
 18namespace Syki.Daemon.Tasks;
 19
 27120public class SeedInstitutionDataHandler(
 27121    SykiDbContext ctx,
 27122    CreateTeacherService createTeacherService,
 27123    CreateStudentService createStudentService,
 27124    CreateClassService createClassService,
 27125    ReleaseClassesForEnrollmentService releaseClassesForEnrollmentService,
 27126    StartClassesService startClassesService,
 27127    CreateEnrollmentPeriodService createEnrollmentPeriodService,
 27128    UpdateEnrollmentPeriodService updateEnrollmentPeriodService,
 27129    CreateLessonAttendanceService createLessonAttendanceService,
 27130    AddExamGradeNoteService addExamGradeNoteService,
 27131    FinalizeClassesService finalizeClassesService,
 27132    CreateStudentEnrollmentService createStudentEnrollmentService) : ISykiTaskHandler<SeedInstitutionData>
 33{
 34    public async Task Handle(SeedInstitutionData task)
 35    {
 54236        if (Env.IsTesting()) return;
 37
 038        var id = task.InstitutionId;
 039        var institution = await ctx.Institutions.FirstAsync(f => f.Id == id);
 40
 041        AddAcademicPeriods(institution);
 042        AddCampi(institution);
 043        AddCourses(institution);
 44
 045        var adsDisciplines = GetAdsDisciplines(id);
 046        var direitoDisciplines = GetDireitoDisciplines(id);
 47
 048        institution.Disciplines = [];
 049        institution.Disciplines.AddRange(adsDisciplines);
 050        institution.Disciplines.AddRange(direitoDisciplines);
 51
 052        institution.Courses[1].Disciplines = adsDisciplines;
 053        institution.Courses[4].Disciplines = direitoDisciplines;
 54
 055        var adsCC = GetAdsCourseCurriculum(institution, adsDisciplines);
 056        ctx.Add(adsCC);
 057        var courseOfferingAds = new CourseOffering(
 058            id,
 059            institution.Campi[2].Id,
 060            institution.Courses[1].Id,
 061            adsCC.Id,
 062            institution.AcademicPeriods[0].Id,
 063            Shift.Noturno
 064        );
 065        ctx.Add(courseOfferingAds);
 66
 067        var direitoCC = GetDireitoCourseCurriculum(institution, direitoDisciplines);
 068        ctx.Add(direitoCC);
 069        var courseOfferingDireito = new CourseOffering(
 070            id,
 071            institution.Campi[2].Id,
 072            institution.Courses[4].Id,
 073            direitoCC.Id,
 074            institution.AcademicPeriods[0].Id,
 075            Shift.Noturno
 076        );
 077        ctx.Add(courseOfferingDireito);
 78
 079        var teachers = new List<Guid>()
 080        {
 081            (await createTeacherService.Create(institution.Id, CreateTeacherIn.Seed("Davi Pessoa Ferraz"))).GetSuccess()
 082            (await createTeacherService.Create(institution.Id, CreateTeacherIn.Seed("Luciete Bezerra Alves"))).GetSucces
 083            (await createTeacherService.Create(institution.Id, CreateTeacherIn.Seed("Paulo Marcelo Pedrosa de Almeida"))
 084            (await createTeacherService.Create(institution.Id, CreateTeacherIn.Seed("Manuela Abath Valença"))).GetSucces
 085        };
 086        var direiters = new List<Guid>()
 087        {
 088            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Maria Júlia de Oliveira Melo", cour
 089            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Everton Ian de Galhardo Filho", cou
 090            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Alisson Aranda de Aguiar", courseOf
 091            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Alma Celeste Maldonado Mendonça", c
 092        };
 093        var adsers = new List<Guid>()
 094        {
 095            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Zaqueu do Vale Cavalcante", courseO
 096            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Marlene de Oliveira", courseOfferin
 097            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Simone Bezerra", courseOfferingDire
 098            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Marcelo Lima Filho", courseOffering
 099            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Josilda Aragão Paz", courseOffering
 0100            (await createStudentService.Create(institution.Id, CreateStudentIn.Seed("Miguel Gomes da Silva", courseOffer
 0101        };
 102
 103        // TURMAS 2024.1
 0104        var classesIds = new List<Guid>();
 0105        for (int i = 0; i < 6; i++)
 106        {
 0107            var disciplineId = adsDisciplines[i].Id;
 0108            var response = await createClassService.Create(id, new()
 0109            {
 0110                DisciplineId = disciplineId,
 0111                TeacherId = teachers.PickRandom(),
 0112                Period = institution.AcademicPeriods[0].Id,
 0113                Vacancies = new List<int>{25, 30, 35}.PickRandom(),
 0114                Schedules = [new() { Day = (Day)i, Start = Hour.H19_00, End = Hour.H22_00 }]
 0115            });
 0116            classesIds.Add(response.GetSuccess().Id);
 117        }
 118
 0119        var today = DateTime.Now.ToDateOnly();
 0120        var firstDay = new DateTime(today.Year, 1, 1).ToDateOnly();
 0121        var lastDay = new DateTime(today.Year, 12, 31).ToDateOnly();
 0122        await createEnrollmentPeriodService.Create(id, new()
 0123        {
 0124            Id = institution.AcademicPeriods[0].Id,
 0125            StartAt = firstDay,
 0126            EndAt = lastDay,
 0127        });
 128
 0129        await releaseClassesForEnrollmentService.Release(id, new() { Classes = classesIds });
 130
 0131        foreach (var item in adsers)
 132        {
 0133            await createStudentEnrollmentService.Create(id, item, adsCC.Id, new() { Classes = classesIds });
 134        }
 135
 0136        await updateEnrollmentPeriodService.Update(id, institution.AcademicPeriods[0].Id, new() { StartAt = new DateTime
 137
 0138        await startClassesService.Start(id, new() { Classes = classesIds });
 139
 140        // Chamadas + Notas
 0141        var classes = await ctx.Classes.AsNoTracking()
 0142            .Include(c => c.Lessons)
 0143            .Include(c => c.Students)
 0144            .Include(c => c.ExamGrades)
 0145            .Where(c => c.InstitutionId == id && classesIds.Contains(c.Id))
 0146            .ToListAsync();
 147
 0148        var random = new Random();
 0149        foreach (var item in classes)
 150        {
 0151            foreach (var lesson in item.Lessons.Where(l => l.Date < today))
 152            {
 0153                await createLessonAttendanceService.Create(item.TeacherId, lesson.Id, new(item.Students.Select(s => s.Id
 154            }
 155
 0156            foreach (var student in item.Students)
 157            {
 0158                foreach (var examGrade in item.ExamGrades.Where(g => g.ClassId == item.Id && g.StudentId == student.Id))
 159                {
 0160                    var note = Convert.ToDecimal(Math.Round(random.NextDouble()*10, 2));
 0161                    await addExamGradeNoteService.Add(item.TeacherId, examGrade.Id, new(note < 4 ? note+5 : note));
 162                }
 0163            }
 0164        }
 165
 0166        await finalizeClassesService.Finalize(id, new() { Classes = classesIds });
 167
 168        // ----------------------------------------------------------------------------------------
 169
 170        // TURMAS 2024.2
 0171        classesIds = [];
 0172        for (int i = 6; i < 12; i++)
 173        {
 0174            var disciplineId = adsDisciplines[i].Id;
 0175            var response = await createClassService.Create(id, new()
 0176            {
 0177                DisciplineId = disciplineId,
 0178                TeacherId = teachers.PickRandom(),
 0179                Period = institution.AcademicPeriods[1].Id,
 0180                Vacancies = new List<int>{25, 30, 35}.PickRandom(),
 0181                Schedules = [new() { Day = (Day)(i-6), Start = Hour.H19_00, End = Hour.H22_00 }]
 0182            });
 0183            classesIds.Add(response.GetSuccess().Id);
 184        }
 185
 0186        today = DateTime.Now.ToDateOnly();
 0187        await createEnrollmentPeriodService.Create(id, new()
 0188        {
 0189            Id = institution.AcademicPeriods[1].Id,
 0190            StartAt = firstDay,
 0191            EndAt = lastDay,
 0192        });
 193
 0194        await releaseClassesForEnrollmentService.Release(id, new() { Classes = classesIds });
 195
 0196        foreach (var item in adsers)
 197        {
 0198            await createStudentEnrollmentService.Create(id, item, adsCC.Id, new() { Classes = classesIds });
 199        }
 200
 0201        await updateEnrollmentPeriodService.Update(id, institution.AcademicPeriods[1].Id, new() { StartAt = today.AddDay
 202
 0203        await startClassesService.Start(id, new() { Classes = classesIds });
 204
 205        // Chamadas + Notas
 0206        classes = await ctx.Classes.AsNoTracking()
 0207            .Include(c => c.Lessons)
 0208            .Include(c => c.Students)
 0209            .Include(c => c.ExamGrades)
 0210            .Where(c => c.InstitutionId == id && classesIds.Contains(c.Id))
 0211            .ToListAsync();
 212
 0213        random = new Random();
 0214        foreach (var item in classes)
 215        {
 0216            foreach (var lesson in item.Lessons.Where(l => l.Date < today))
 217            {
 0218                await createLessonAttendanceService.Create(item.TeacherId, lesson.Id, new(item.Students.Select(s => s.Id
 219            }
 220
 0221            foreach (var student in item.Students)
 222            {
 0223                var examGrade = item.ExamGrades.First(g => g.ClassId == item.Id && g.StudentId == student.Id && g.ExamTy
 0224                var note = Convert.ToDecimal(Math.Round(random.NextDouble()*10, 2));
 0225                await addExamGradeNoteService.Add(item.TeacherId, examGrade.Id, new(note < 4 ? note+5 : note));
 226            }
 0227        }
 228
 0229        await ctx.SaveChangesAsync();
 271230    }
 231
 232    private void AddAcademicPeriods(Institution institution)
 233    {
 0234        var year = DateTime.Now.Year;
 0235        institution.AcademicPeriods =
 0236        [
 0237            new($"{year}.1", institution.Id, new DateOnly(year, 02, 01), new DateOnly(year, 06, 01)),
 0238            new($"{year}.2", institution.Id, new DateOnly(year, 07, 03), new DateOnly(year, 12, 05)),
 0239        ];
 0240    }
 241
 242    private void AddCampi(Institution institution)
 243    {
 244
 0245        institution.Campi =
 0246        [
 0247            new(institution.Id, "Garoa", "Garanhuns - PE"),
 0248            new(institution.Id, "Sertão", "Petrolina - PE"),
 0249            new(institution.Id, "Agreste", "Caruaru - PE"),
 0250            new(institution.Id, "Suassuna", "Recife - PE"),
 0251        ];
 0252    }
 253
 254    private void AddCourses(Institution institution)
 255    {
 0256        institution.Courses =
 0257        [
 0258            new(institution.Id, "Administração", CourseType.Mestrado),
 0259            new(institution.Id, "Análise e Desenvolvimento de Sistemas", CourseType.Bacharelado),
 0260            new(institution.Id, "Arquitetura e Urbanismo", CourseType.Tecnologo),
 0261            new(institution.Id, "Ciência da Computação", CourseType.Bacharelado),
 0262            new(institution.Id, "Direito", CourseType.Bacharelado),
 0263            new(institution.Id, "Engenharia Civil", CourseType.Bacharelado),
 0264            new(institution.Id, "Engenharia Mecânica", CourseType.Bacharelado),
 0265            new(institution.Id, "Engenharia de Produção", CourseType.PosDoutorado),
 0266            new(institution.Id, "Pedagogia", CourseType.Licenciatura),
 0267        ];
 0268    }
 269
 270    private static List<Discipline> GetAdsDisciplines(Guid id)
 271    {
 0272        return
 0273        [
 0274            new(id, "Matemática Discreta"),
 0275            new(id, "Pensamento Computacional e Algoritmos"),
 0276            new(id, "Design de Interação Humano-Máquina"),
 0277            new(id, "Introdução à Redes de Computadores"),
 0278            new(id, "Introdução ao Desenvolvimento Web"),
 0279            new(id, "Projeto Integrador I: Concepção e Prototipação"),
 0280            //
 0281            new(id, "Arquitetura de Computadores e Sistemas Operacionais"),
 0282            new(id, "Banco de Dados"),
 0283            new(id, "Estrutura de Dados"),
 0284            new(id, "Informática e Sociedade"),
 0285            new(id, "Programação Orientada a Objetos"),
 0286            new(id, "Projeto Integrador II: Modelagem de Banco de Dados"),
 0287            //
 0288            new(id, "Análise e Projeto de Software"),
 0289            new(id, "Arquitetura de Software"),
 0290            new(id, "Computação em Nuvem e Web Services"),
 0291            new(id, "Estatística Aplicada"),
 0292            new(id, "Projeto Integrador III: Desenvolvimento Full Stack"),
 0293            new(id, "Configuração e Manutenção de Software"),
 0294            //
 0295            new(id, "Inovação e Empreendedorismo"),
 0296            new(id, "Análise e Visualização de Dados"),
 0297            new(id, "Desenvolvimentos de Aplicações Móveis"),
 0298            new(id, "Gestão de Projetos e Governança de TI"),
 0299            new(id, "Projeto Integrador IV: Aplicações Móveis"),
 0300            new(id, "Sistemas Distribuídos"),
 0301            //
 0302            new(id, "Big Data e Data Science"),
 0303            new(id, "Inteligência Artificial"),
 0304            new(id, "Libras"),
 0305            new(id, "Projeto Integrador V: Sistemas Inteligentes"),
 0306            new(id, "Segurança da Informação"),
 0307            new(id, "Sistemas Embarcados"),
 0308            new(id, "Testes e Verificação de Software")
 0309        ];
 310    }
 311
 312    private static List<Discipline> GetDireitoDisciplines(Guid id)
 313    {
 0314        return
 0315        [
 0316            new(id, "Bases Filosóficas"),
 0317            new(id, "Comunicação e Argumentação Jurídica"),
 0318            new(id, "Homem, Sociedade e Direito"),
 0319            new(id, "Política e Estado em Foco"),
 0320            new(id, "Teoria Geral do Direito"),
 0321            //
 0322            new(id, "Constituição: Teoria e Lógica Central"),
 0323            new(id, "Economia"),
 0324            new(id, "Processo e Justiça em Foco: Teoria Geral e Sistema"),
 0325            new(id, "Psicologia e Direito"),
 0326            new(id, "Teoria do Crime"),
 0327            new(id, "Teoria Geral do Direito Privado"),
 0328            //
 0329            new(id, "Das Relações Obrigacionais"),
 0330            new(id, "Empresa: Teoria Geral"),
 0331            new(id, "Organização do Estado e Carreiras Jurídicas em Foco"),
 0332            new(id, "Processo de Conhecimento"),
 0333            new(id, "Teoria da Pena"),
 0334            //
 0335            new(id, "Contratos Teoria e Prática em Foco"),
 0336            new(id, "Crimes em Espécie I"),
 0337            new(id, "Processo de Conhecimento II"),
 0338            new(id, "Relações Individuais de Trabalho"),
 0339            new(id, "Societário e Contratos Mercantis"),
 0340            new(id, "Tópicos De Direito Empresarial e Societário"),
 0341            //
 0342            new(id, "Administração Pública: Teoria Geral"),
 0343            new(id, "Crimes em Espécie II"),
 0344            new(id, "Direito Civil das Coisas"),
 0345            new(id, "Recursos Cíveis"),
 0346            new(id, "Relações Coletivas de Trabalho"),
 0347            new(id, "Soluções Adequadas de Conflitos em Foco"),
 0348            //
 0349            new(id, "Atuação na Área Cível em Foco"),
 0350            new(id, "Direito das Famílias"),
 0351            new(id, "Estado e Finanças Públicas"),
 0352            new(id, "Execução Civil"),
 0353            new(id, "Negócios Jurídicos Administrativos"),
 0354            new(id, "Ordem e Previdência Social"),
 0355            //
 0356            new(id, "Atendimento na Área Cível em Foco"),
 0357            new(id, "Direito Internacional"),
 0358            new(id, "Processo Penal: Teoria Geral"),
 0359            new(id, "Responsabilidade Civil e Consumidor"),
 0360            new(id, "Sistema Tributário Nacional"),
 0361            new(id, "Sucessões"),
 0362            //
 0363            new(id, "Atuação na Àrea Trabalhista em Foco"),
 0364            new(id, "Deontologia e Ética"),
 0365            new(id, "Direito Constitucional Avançado"),
 0366            new(id, "Direito Processual do Trabalho"),
 0367            new(id, "Pesquisa e Projeto "),
 0368            new(id, "Processo Penal Especial"),
 0369            new(id, "Tributos"),
 0370            //
 0371            new(id, "Atuação na Área Criminal em Foco"),
 0372            new(id, "Direito Ambiental"),
 0373            new(id, "Direito e Inovação"),
 0374            new(id, "Hermenêutica Jurídica"),
 0375            new(id, "Optativa I"),
 0376            new(id, "Recuperação Judicial e Falência"),
 0377            new(id, "Trabalho de Conclusão de Curso I"),
 0378            //
 0379            new(id, "Atuação na Área Pública em Foco"),
 0380            new(id, "Direito da Criança e do Adolescente e do Idoso"),
 0381            new(id, "Direitos Humanos"),
 0382            new(id, "Optativa II"),
 0383            new(id, "Optativa III"),
 0384            new(id, "Processo Constitucional"),
 0385            new(id, "Trabalho de Conclusão de Curso II"),
 0386        ];
 387    }
 388
 389    private static CourseCurriculum GetAdsCourseCurriculum(Institution institution, List<Discipline> disciplines)
 390    {
 0391        var adsCC = new CourseCurriculum(institution.Id, institution.Courses[1].Id, "Grade ADS 1.0");
 0392        adsCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 0393        adsCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 0394        adsCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 0395        adsCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 0396        adsCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 0397        adsCC.Links.Add(new(disciplines[05].Id, 1, 4, 60));
 398        //
 0399        adsCC.Links.Add(new(disciplines[06].Id, 2, 4, 72));
 0400        adsCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 0401        adsCC.Links.Add(new(disciplines[08].Id, 2, 4, 72));
 0402        adsCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 0403        adsCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 0404        adsCC.Links.Add(new(disciplines[11].Id, 2, 4, 60));
 405        //
 0406        adsCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 0407        adsCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 0408        adsCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 0409        adsCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 0410        adsCC.Links.Add(new(disciplines[16].Id, 3, 4, 60));
 0411        adsCC.Links.Add(new(disciplines[17].Id, 3, 4, 72));
 412        //
 0413        adsCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 0414        adsCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 0415        adsCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 0416        adsCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 0417        adsCC.Links.Add(new(disciplines[22].Id, 4, 4, 60));
 0418        adsCC.Links.Add(new(disciplines[23].Id, 4, 4, 72));
 419        //
 0420        adsCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 0421        adsCC.Links.Add(new(disciplines[25].Id, 5, 4, 72));
 0422        adsCC.Links.Add(new(disciplines[26].Id, 5, 2, 30));
 0423        adsCC.Links.Add(new(disciplines[27].Id, 5, 4, 60));
 0424        adsCC.Links.Add(new(disciplines[28].Id, 5, 4, 72));
 0425        adsCC.Links.Add(new(disciplines[29].Id, 5, 4, 72));
 0426        adsCC.Links.Add(new(disciplines[30].Id, 5, 4, 72));
 427
 0428        return adsCC;
 429    }
 430
 431    private static CourseCurriculum GetDireitoCourseCurriculum(Institution institution, List<Discipline> disciplines)
 432    {
 0433        var direitoCC = new CourseCurriculum(institution.Id, institution.Courses[4].Id, "Grade Direito 1.0");
 434
 0435        direitoCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 0436        direitoCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 0437        direitoCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 0438        direitoCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 0439        direitoCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 440        //
 0441        direitoCC.Links.Add(new(disciplines[05].Id, 2, 4, 72));
 0442        direitoCC.Links.Add(new(disciplines[06].Id, 2, 2, 36));
 0443        direitoCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 0444        direitoCC.Links.Add(new(disciplines[08].Id, 2, 2, 36));
 0445        direitoCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 0446        direitoCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 447        //
 0448        direitoCC.Links.Add(new(disciplines[11].Id, 3, 4, 72));
 0449        direitoCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 0450        direitoCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 0451        direitoCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 0452        direitoCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 453        //
 0454        direitoCC.Links.Add(new(disciplines[16].Id, 4, 4, 72));
 0455        direitoCC.Links.Add(new(disciplines[17].Id, 4, 4, 72));
 0456        direitoCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 0457        direitoCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 0458        direitoCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 0459        direitoCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 460        //
 0461        direitoCC.Links.Add(new(disciplines[22].Id, 5, 4, 72));
 0462        direitoCC.Links.Add(new(disciplines[23].Id, 5, 4, 72));
 0463        direitoCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 0464        direitoCC.Links.Add(new(disciplines[25].Id, 5, 3, 60));
 0465        direitoCC.Links.Add(new(disciplines[26].Id, 5, 3, 60));
 0466        direitoCC.Links.Add(new(disciplines[27].Id, 5, 4, 72));
 467        //
 468        //
 0469        direitoCC.Links.Add(new(disciplines[28].Id, 6, 4, 72));
 0470        direitoCC.Links.Add(new(disciplines[29].Id, 6, 4, 72));
 0471        direitoCC.Links.Add(new(disciplines[30].Id, 6, 4, 72));
 0472        direitoCC.Links.Add(new(disciplines[31].Id, 6, 3, 60));
 0473        direitoCC.Links.Add(new(disciplines[32].Id, 6, 4, 72));
 0474        direitoCC.Links.Add(new(disciplines[33].Id, 6, 4, 72));
 475        //
 0476        direitoCC.Links.Add(new(disciplines[34].Id, 7, 4, 72));
 0477        direitoCC.Links.Add(new(disciplines[35].Id, 7, 4, 72));
 0478        direitoCC.Links.Add(new(disciplines[36].Id, 7, 4, 72));
 0479        direitoCC.Links.Add(new(disciplines[37].Id, 7, 3, 60));
 0480        direitoCC.Links.Add(new(disciplines[38].Id, 7, 4, 72));
 0481        direitoCC.Links.Add(new(disciplines[39].Id, 7, 4, 72));
 482        //
 0483        direitoCC.Links.Add(new(disciplines[40].Id, 8, 4, 72));
 0484        direitoCC.Links.Add(new(disciplines[41].Id, 8, 3, 72));
 0485        direitoCC.Links.Add(new(disciplines[42].Id, 8, 2, 36));
 0486        direitoCC.Links.Add(new(disciplines[43].Id, 8, 4, 72));
 0487        direitoCC.Links.Add(new(disciplines[44].Id, 8, 2, 36));
 0488        direitoCC.Links.Add(new(disciplines[45].Id, 8, 4, 72));
 0489        direitoCC.Links.Add(new(disciplines[46].Id, 8, 4, 72));
 490        //
 0491        direitoCC.Links.Add(new(disciplines[47].Id, 9, 2, 72));
 0492        direitoCC.Links.Add(new(disciplines[48].Id, 9, 2, 36));
 0493        direitoCC.Links.Add(new(disciplines[49].Id, 9, 2, 36));
 0494        direitoCC.Links.Add(new(disciplines[50].Id, 9, 2, 36));
 0495        direitoCC.Links.Add(new(disciplines[51].Id, 9, 2, 72));
 0496        direitoCC.Links.Add(new(disciplines[52].Id, 9, 4, 72));
 0497        direitoCC.Links.Add(new(disciplines[53].Id, 9, 2, 36));
 498        //
 0499        direitoCC.Links.Add(new(disciplines[54].Id, 10, 2, 72));
 0500        direitoCC.Links.Add(new(disciplines[55].Id, 10, 3, 60));
 0501        direitoCC.Links.Add(new(disciplines[56].Id, 10, 2, 40));
 0502        direitoCC.Links.Add(new(disciplines[57].Id, 10, 2, 36));
 0503        direitoCC.Links.Add(new(disciplines[58].Id, 10, 2, 36));
 0504        direitoCC.Links.Add(new(disciplines[59].Id, 10, 2, 72));
 0505        direitoCC.Links.Add(new(disciplines[60].Id, 10, 4, 36));
 506
 0507        return direitoCC;
 508    }
 509}