< Summary - Syki

Information
Class: Syki.Back.Features.Cross.SeedInstitutionData.SeedInstitutionBasicDataCommandHandler
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Features/Cross/SeedInstitutionData/SeedInstitutionBasicDataCommand.cs
Tag: 21_17346963026
Line coverage
1%
Covered lines: 3
Uncovered lines: 271
Coverable lines: 274
Total lines: 340
Line coverage: 1%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
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()50%525.26%
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/Back/Features/Cross/SeedInstitutionData/SeedInstitutionBasicDataCommand.cs

#LineLine coverage
 1
 2using Syki.Back.Features.Cross.CreateInstitution;
 3using Syki.Back.Features.Academic.CreateDiscipline;
 4using Syki.Back.Features.Academic.CreateCourseOffering;
 5using Syki.Back.Features.Academic.CreateCourseCurriculum;
 6
 7namespace Syki.Back.Features.Cross.SeedInstitutionData;
 8
 9[CommandDescription("Realizar seed de dados básicos da instituição")]
 10public record SeedInstitutionBasicDataCommand(Guid InstitutionId) : ICommand;
 11
 63612public class SeedInstitutionBasicDataCommandHandler(SykiDbContext ctx) : ICommandHandler<SeedInstitutionBasicDataCommand
 13{
 14    public async Task Handle(CommandId commandId, SeedInstitutionBasicDataCommand command)
 15    {
 127216        if (Env.IsTesting()) return;
 17
 018        var id = command.InstitutionId;
 019        var institution = await ctx.Institutions.FirstAsync(f => f.Id == id);
 20
 021        AddAcademicPeriods(institution);
 022        AddCampi(institution);
 023        AddCourses(institution);
 24
 025        var adsDisciplines = GetAdsDisciplines(id);
 026        var direitoDisciplines = GetDireitoDisciplines(id);
 27
 028        institution.Disciplines = [];
 029        institution.Disciplines.AddRange(adsDisciplines);
 030        institution.Disciplines.AddRange(direitoDisciplines);
 31
 032        institution.Courses[1].Disciplines = adsDisciplines;
 033        institution.Courses[4].Disciplines = direitoDisciplines;
 34
 035        var periodIndex = DateTime.Now.Month < 6 ? 0 : 1;
 36
 037        var adsCC = GetAdsCourseCurriculum(institution, adsDisciplines);
 038        ctx.Add(adsCC);
 039        var courseOfferingAds = new CourseOffering(
 040            id,
 041            institution.Campi[2].Id,
 042            institution.Courses[1].Id,
 043            adsCC.Id,
 044            institution.AcademicPeriods[periodIndex].Id,
 045            Shift.Noturno
 046        );
 047        ctx.Add(courseOfferingAds);
 48
 049        var direitoCC = GetDireitoCourseCurriculum(institution, direitoDisciplines);
 050        ctx.Add(direitoCC);
 051        var courseOfferingDireito = new CourseOffering(
 052            id,
 053            institution.Campi[2].Id,
 054            institution.Courses[4].Id,
 055            direitoCC.Id,
 056            institution.AcademicPeriods[periodIndex].Id,
 057            Shift.Noturno
 058        );
 059        ctx.Add(courseOfferingDireito);
 60
 061        ctx.AddCommand(id, new SeedInstitutionUsersCommand(id, courseOfferingDireito.Id, courseOfferingAds.Id), parentId
 63662    }
 63
 64    private static void AddAcademicPeriods(Institution institution)
 65    {
 066        var year = DateTime.UtcNow.Year;
 067        institution.AcademicPeriods =
 068        [
 069            new($"{year}.1", institution.Id, new DateOnly(year, 02, 01), new DateOnly(year, 06, 01)),
 070            new($"{year}.2", institution.Id, new DateOnly(year, 07, 03), new DateOnly(year, 12, 05)),
 071        ];
 072    }
 73
 74    private static void AddCampi(Institution institution)
 75    {
 076        institution.Campi =
 077        [
 078            new(institution.Id, "Garoa", BrazilState.PE, "Garanhuns", 150),
 079            new(institution.Id, "Sertão", BrazilState.PE, "Petrolina", 500),
 080            new(institution.Id, "Agreste", BrazilState.PE, "Caruaru", 750),
 081            new(institution.Id, "Suassuna", BrazilState.PE, "Recife", 1200),
 082        ];
 083    }
 84
 85    private static void AddCourses(Institution institution)
 86    {
 087        institution.Courses =
 088        [
 089            new(institution.Id, "Administração", CourseType.Mestrado),
 090            new(institution.Id, "Análise e Desenvolvimento de Sistemas", CourseType.Bacharelado),
 091            new(institution.Id, "Arquitetura e Urbanismo", CourseType.Tecnologo),
 092            new(institution.Id, "Ciência da Computação", CourseType.Bacharelado),
 093            new(institution.Id, "Direito", CourseType.Bacharelado),
 094            new(institution.Id, "Engenharia Civil", CourseType.Bacharelado),
 095            new(institution.Id, "Engenharia Mecânica", CourseType.Bacharelado),
 096            new(institution.Id, "Engenharia de Produção", CourseType.PosDoutorado),
 097            new(institution.Id, "Pedagogia", CourseType.Licenciatura),
 098        ];
 099    }
 100
 101    private static List<Discipline> GetAdsDisciplines(Guid id)
 102    {
 0103        return
 0104        [
 0105            new(id, "Matemática Discreta"),
 0106            new(id, "Pensamento Computacional e Algoritmos"),
 0107            new(id, "Design de Interação Humano-Máquina"),
 0108            new(id, "Introdução à Redes de Computadores"),
 0109            new(id, "Introdução ao Desenvolvimento Web"),
 0110            new(id, "Projeto Integrador I: Concepção e Prototipação"),
 0111            //
 0112            new(id, "Arquitetura de Computadores e Sistemas Operacionais"),
 0113            new(id, "Banco de Dados"),
 0114            new(id, "Estrutura de Dados"),
 0115            new(id, "Informática e Sociedade"),
 0116            new(id, "Programação Orientada a Objetos"),
 0117            new(id, "Projeto Integrador II: Modelagem de Banco de Dados"),
 0118            //
 0119            new(id, "Análise e Projeto de Software"),
 0120            new(id, "Arquitetura de Software"),
 0121            new(id, "Computação em Nuvem e Web Services"),
 0122            new(id, "Estatística Aplicada"),
 0123            new(id, "Projeto Integrador III: Desenvolvimento Full Stack"),
 0124            new(id, "Configuração e Manutenção de Software"),
 0125            //
 0126            new(id, "Inovação e Empreendedorismo"),
 0127            new(id, "Análise e Visualização de Dados"),
 0128            new(id, "Desenvolvimentos de Aplicações Móveis"),
 0129            new(id, "Gestão de Projetos e Governança de TI"),
 0130            new(id, "Projeto Integrador IV: Aplicações Móveis"),
 0131            new(id, "Sistemas Distribuídos"),
 0132            //
 0133            new(id, "Big Data e Data Science"),
 0134            new(id, "Inteligência Artificial"),
 0135            new(id, "Libras"),
 0136            new(id, "Projeto Integrador V: Sistemas Inteligentes"),
 0137            new(id, "Segurança da Informação"),
 0138            new(id, "Sistemas Embarcados"),
 0139            new(id, "Testes e Verificação de Software")
 0140        ];
 141    }
 142
 143    private static List<Discipline> GetDireitoDisciplines(Guid id)
 144    {
 0145        return
 0146        [
 0147            new(id, "Bases Filosóficas"),
 0148            new(id, "Comunicação e Argumentação Jurídica"),
 0149            new(id, "Homem, Sociedade e Direito"),
 0150            new(id, "Política e Estado em Foco"),
 0151            new(id, "Teoria Geral do Direito"),
 0152            //
 0153            new(id, "Constituição: Teoria e Lógica Central"),
 0154            new(id, "Economia"),
 0155            new(id, "Processo e Justiça em Foco: Teoria Geral e Sistema"),
 0156            new(id, "Psicologia e Direito"),
 0157            new(id, "Teoria do Crime"),
 0158            new(id, "Teoria Geral do Direito Privado"),
 0159            //
 0160            new(id, "Das Relações Obrigacionais"),
 0161            new(id, "Empresa: Teoria Geral"),
 0162            new(id, "Organização do Estado e Carreiras Jurídicas em Foco"),
 0163            new(id, "Processo de Conhecimento"),
 0164            new(id, "Teoria da Pena"),
 0165            //
 0166            new(id, "Contratos Teoria e Prática em Foco"),
 0167            new(id, "Crimes em Espécie I"),
 0168            new(id, "Processo de Conhecimento II"),
 0169            new(id, "Relações Individuais de Trabalho"),
 0170            new(id, "Societário e Contratos Mercantis"),
 0171            new(id, "Tópicos De Direito Empresarial e Societário"),
 0172            //
 0173            new(id, "Administração Pública: Teoria Geral"),
 0174            new(id, "Crimes em Espécie II"),
 0175            new(id, "Direito Civil das Coisas"),
 0176            new(id, "Recursos Cíveis"),
 0177            new(id, "Relações Coletivas de Trabalho"),
 0178            new(id, "Soluções Adequadas de Conflitos em Foco"),
 0179            //
 0180            new(id, "Atuação na Área Cível em Foco"),
 0181            new(id, "Direito das Famílias"),
 0182            new(id, "Estado e Finanças Públicas"),
 0183            new(id, "Execução Civil"),
 0184            new(id, "Negócios Jurídicos Administrativos"),
 0185            new(id, "Ordem e Previdência Social"),
 0186            //
 0187            new(id, "Atendimento na Área Cível em Foco"),
 0188            new(id, "Direito Internacional"),
 0189            new(id, "Processo Penal: Teoria Geral"),
 0190            new(id, "Responsabilidade Civil e Consumidor"),
 0191            new(id, "Sistema Tributário Nacional"),
 0192            new(id, "Sucessões"),
 0193            //
 0194            new(id, "Atuação na Àrea Trabalhista em Foco"),
 0195            new(id, "Deontologia e Ética"),
 0196            new(id, "Direito Constitucional Avançado"),
 0197            new(id, "Direito Processual do Trabalho"),
 0198            new(id, "Pesquisa e Projeto "),
 0199            new(id, "Processo Penal Especial"),
 0200            new(id, "Tributos"),
 0201            //
 0202            new(id, "Atuação na Área Criminal em Foco"),
 0203            new(id, "Direito Ambiental"),
 0204            new(id, "Direito e Inovação"),
 0205            new(id, "Hermenêutica Jurídica"),
 0206            new(id, "Optativa I"),
 0207            new(id, "Recuperação Judicial e Falência"),
 0208            new(id, "Trabalho de Conclusão de Curso I"),
 0209            //
 0210            new(id, "Atuação na Área Pública em Foco"),
 0211            new(id, "Direito da Criança e do Adolescente e do Idoso"),
 0212            new(id, "Direitos Humanos"),
 0213            new(id, "Optativa II"),
 0214            new(id, "Optativa III"),
 0215            new(id, "Processo Constitucional"),
 0216            new(id, "Trabalho de Conclusão de Curso II"),
 0217        ];
 218    }
 219
 220    private static CourseCurriculum GetAdsCourseCurriculum(Institution institution, List<Discipline> disciplines)
 221    {
 0222        var adsCC = new CourseCurriculum(institution.Id, institution.Courses[1].Id, "Grade ADS 1.0");
 0223        adsCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 0224        adsCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 0225        adsCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 0226        adsCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 0227        adsCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 0228        adsCC.Links.Add(new(disciplines[05].Id, 1, 4, 60));
 229        //
 0230        adsCC.Links.Add(new(disciplines[06].Id, 2, 4, 72));
 0231        adsCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 0232        adsCC.Links.Add(new(disciplines[08].Id, 2, 4, 72));
 0233        adsCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 0234        adsCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 0235        adsCC.Links.Add(new(disciplines[11].Id, 2, 4, 60));
 236        //
 0237        adsCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 0238        adsCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 0239        adsCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 0240        adsCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 0241        adsCC.Links.Add(new(disciplines[16].Id, 3, 4, 60));
 0242        adsCC.Links.Add(new(disciplines[17].Id, 3, 4, 72));
 243        //
 0244        adsCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 0245        adsCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 0246        adsCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 0247        adsCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 0248        adsCC.Links.Add(new(disciplines[22].Id, 4, 4, 60));
 0249        adsCC.Links.Add(new(disciplines[23].Id, 4, 4, 72));
 250        //
 0251        adsCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 0252        adsCC.Links.Add(new(disciplines[25].Id, 5, 4, 72));
 0253        adsCC.Links.Add(new(disciplines[26].Id, 5, 2, 30));
 0254        adsCC.Links.Add(new(disciplines[27].Id, 5, 4, 60));
 0255        adsCC.Links.Add(new(disciplines[28].Id, 5, 4, 72));
 0256        adsCC.Links.Add(new(disciplines[29].Id, 5, 4, 72));
 0257        adsCC.Links.Add(new(disciplines[30].Id, 5, 4, 72));
 258
 0259        return adsCC;
 260    }
 261
 262    private static CourseCurriculum GetDireitoCourseCurriculum(Institution institution, List<Discipline> disciplines)
 263    {
 0264        var direitoCC = new CourseCurriculum(institution.Id, institution.Courses[4].Id, "Grade Direito 1.0");
 265
 0266        direitoCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 0267        direitoCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 0268        direitoCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 0269        direitoCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 0270        direitoCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 271        //
 0272        direitoCC.Links.Add(new(disciplines[05].Id, 2, 4, 72));
 0273        direitoCC.Links.Add(new(disciplines[06].Id, 2, 2, 36));
 0274        direitoCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 0275        direitoCC.Links.Add(new(disciplines[08].Id, 2, 2, 36));
 0276        direitoCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 0277        direitoCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 278        //
 0279        direitoCC.Links.Add(new(disciplines[11].Id, 3, 4, 72));
 0280        direitoCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 0281        direitoCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 0282        direitoCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 0283        direitoCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 284        //
 0285        direitoCC.Links.Add(new(disciplines[16].Id, 4, 4, 72));
 0286        direitoCC.Links.Add(new(disciplines[17].Id, 4, 4, 72));
 0287        direitoCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 0288        direitoCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 0289        direitoCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 0290        direitoCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 291        //
 0292        direitoCC.Links.Add(new(disciplines[22].Id, 5, 4, 72));
 0293        direitoCC.Links.Add(new(disciplines[23].Id, 5, 4, 72));
 0294        direitoCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 0295        direitoCC.Links.Add(new(disciplines[25].Id, 5, 3, 60));
 0296        direitoCC.Links.Add(new(disciplines[26].Id, 5, 3, 60));
 0297        direitoCC.Links.Add(new(disciplines[27].Id, 5, 4, 72));
 298        //
 299        //
 0300        direitoCC.Links.Add(new(disciplines[28].Id, 6, 4, 72));
 0301        direitoCC.Links.Add(new(disciplines[29].Id, 6, 4, 72));
 0302        direitoCC.Links.Add(new(disciplines[30].Id, 6, 4, 72));
 0303        direitoCC.Links.Add(new(disciplines[31].Id, 6, 3, 60));
 0304        direitoCC.Links.Add(new(disciplines[32].Id, 6, 4, 72));
 0305        direitoCC.Links.Add(new(disciplines[33].Id, 6, 4, 72));
 306        //
 0307        direitoCC.Links.Add(new(disciplines[34].Id, 7, 4, 72));
 0308        direitoCC.Links.Add(new(disciplines[35].Id, 7, 4, 72));
 0309        direitoCC.Links.Add(new(disciplines[36].Id, 7, 4, 72));
 0310        direitoCC.Links.Add(new(disciplines[37].Id, 7, 3, 60));
 0311        direitoCC.Links.Add(new(disciplines[38].Id, 7, 4, 72));
 0312        direitoCC.Links.Add(new(disciplines[39].Id, 7, 4, 72));
 313        //
 0314        direitoCC.Links.Add(new(disciplines[40].Id, 8, 4, 72));
 0315        direitoCC.Links.Add(new(disciplines[41].Id, 8, 3, 72));
 0316        direitoCC.Links.Add(new(disciplines[42].Id, 8, 2, 36));
 0317        direitoCC.Links.Add(new(disciplines[43].Id, 8, 4, 72));
 0318        direitoCC.Links.Add(new(disciplines[44].Id, 8, 2, 36));
 0319        direitoCC.Links.Add(new(disciplines[45].Id, 8, 4, 72));
 0320        direitoCC.Links.Add(new(disciplines[46].Id, 8, 4, 72));
 321        //
 0322        direitoCC.Links.Add(new(disciplines[47].Id, 9, 2, 72));
 0323        direitoCC.Links.Add(new(disciplines[48].Id, 9, 2, 36));
 0324        direitoCC.Links.Add(new(disciplines[49].Id, 9, 2, 36));
 0325        direitoCC.Links.Add(new(disciplines[50].Id, 9, 2, 36));
 0326        direitoCC.Links.Add(new(disciplines[51].Id, 9, 2, 72));
 0327        direitoCC.Links.Add(new(disciplines[52].Id, 9, 4, 72));
 0328        direitoCC.Links.Add(new(disciplines[53].Id, 9, 2, 36));
 329        //
 0330        direitoCC.Links.Add(new(disciplines[54].Id, 10, 2, 72));
 0331        direitoCC.Links.Add(new(disciplines[55].Id, 10, 3, 60));
 0332        direitoCC.Links.Add(new(disciplines[56].Id, 10, 2, 40));
 0333        direitoCC.Links.Add(new(disciplines[57].Id, 10, 2, 36));
 0334        direitoCC.Links.Add(new(disciplines[58].Id, 10, 2, 36));
 0335        direitoCC.Links.Add(new(disciplines[59].Id, 10, 2, 72));
 0336        direitoCC.Links.Add(new(disciplines[60].Id, 10, 4, 36));
 337
 0338        return direitoCC;
 339    }
 340}