< 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: 4_16869239191
Line coverage
1%
Covered lines: 3
Uncovered lines: 270
Coverable lines: 273
Total lines: 338
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.4%
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
 57212public class SeedInstitutionBasicDataCommandHandler(SykiDbContext ctx) : ICommandHandler<SeedInstitutionBasicDataCommand
 13{
 14    public async Task Handle(CommandId commandId, SeedInstitutionBasicDataCommand command)
 15    {
 114416        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 adsCC = GetAdsCourseCurriculum(institution, adsDisciplines);
 036        ctx.Add(adsCC);
 037        var courseOfferingAds = new CourseOffering(
 038            id,
 039            institution.Campi[2].Id,
 040            institution.Courses[1].Id,
 041            adsCC.Id,
 042            institution.AcademicPeriods[0].Id,
 043            Shift.Noturno
 044        );
 045        ctx.Add(courseOfferingAds);
 46
 047        var direitoCC = GetDireitoCourseCurriculum(institution, direitoDisciplines);
 048        ctx.Add(direitoCC);
 049        var courseOfferingDireito = new CourseOffering(
 050            id,
 051            institution.Campi[2].Id,
 052            institution.Courses[4].Id,
 053            direitoCC.Id,
 054            institution.AcademicPeriods[0].Id,
 055            Shift.Noturno
 056        );
 057        ctx.Add(courseOfferingDireito);
 58
 059        ctx.AddCommand(id, new SeedInstitutionUsersCommand(id, courseOfferingDireito.Id, courseOfferingAds.Id), parentId
 57260    }
 61
 62    private static void AddAcademicPeriods(Institution institution)
 63    {
 064        var year = DateTime.UtcNow.Year;
 065        institution.AcademicPeriods =
 066        [
 067            new($"{year}.1", institution.Id, new DateOnly(year, 02, 01), new DateOnly(year, 06, 01)),
 068            new($"{year}.2", institution.Id, new DateOnly(year, 07, 03), new DateOnly(year, 12, 05)),
 069        ];
 070    }
 71
 72    private static void AddCampi(Institution institution)
 73    {
 074        institution.Campi =
 075        [
 076            new(institution.Id, "Garoa", BrazilState.PE, "Garanhuns", 150),
 077            new(institution.Id, "Sertão", BrazilState.PE, "Petrolina", 500),
 078            new(institution.Id, "Agreste", BrazilState.PE, "Caruaru", 750),
 079            new(institution.Id, "Suassuna", BrazilState.PE, "Recife", 1200),
 080        ];
 081    }
 82
 83    private static void AddCourses(Institution institution)
 84    {
 085        institution.Courses =
 086        [
 087            new(institution.Id, "Administração", CourseType.Mestrado),
 088            new(institution.Id, "Análise e Desenvolvimento de Sistemas", CourseType.Bacharelado),
 089            new(institution.Id, "Arquitetura e Urbanismo", CourseType.Tecnologo),
 090            new(institution.Id, "Ciência da Computação", CourseType.Bacharelado),
 091            new(institution.Id, "Direito", CourseType.Bacharelado),
 092            new(institution.Id, "Engenharia Civil", CourseType.Bacharelado),
 093            new(institution.Id, "Engenharia Mecânica", CourseType.Bacharelado),
 094            new(institution.Id, "Engenharia de Produção", CourseType.PosDoutorado),
 095            new(institution.Id, "Pedagogia", CourseType.Licenciatura),
 096        ];
 097    }
 98
 99    private static List<Discipline> GetAdsDisciplines(Guid id)
 100    {
 0101        return
 0102        [
 0103            new(id, "Matemática Discreta"),
 0104            new(id, "Pensamento Computacional e Algoritmos"),
 0105            new(id, "Design de Interação Humano-Máquina"),
 0106            new(id, "Introdução à Redes de Computadores"),
 0107            new(id, "Introdução ao Desenvolvimento Web"),
 0108            new(id, "Projeto Integrador I: Concepção e Prototipação"),
 0109            //
 0110            new(id, "Arquitetura de Computadores e Sistemas Operacionais"),
 0111            new(id, "Banco de Dados"),
 0112            new(id, "Estrutura de Dados"),
 0113            new(id, "Informática e Sociedade"),
 0114            new(id, "Programação Orientada a Objetos"),
 0115            new(id, "Projeto Integrador II: Modelagem de Banco de Dados"),
 0116            //
 0117            new(id, "Análise e Projeto de Software"),
 0118            new(id, "Arquitetura de Software"),
 0119            new(id, "Computação em Nuvem e Web Services"),
 0120            new(id, "Estatística Aplicada"),
 0121            new(id, "Projeto Integrador III: Desenvolvimento Full Stack"),
 0122            new(id, "Configuração e Manutenção de Software"),
 0123            //
 0124            new(id, "Inovação e Empreendedorismo"),
 0125            new(id, "Análise e Visualização de Dados"),
 0126            new(id, "Desenvolvimentos de Aplicações Móveis"),
 0127            new(id, "Gestão de Projetos e Governança de TI"),
 0128            new(id, "Projeto Integrador IV: Aplicações Móveis"),
 0129            new(id, "Sistemas Distribuídos"),
 0130            //
 0131            new(id, "Big Data e Data Science"),
 0132            new(id, "Inteligência Artificial"),
 0133            new(id, "Libras"),
 0134            new(id, "Projeto Integrador V: Sistemas Inteligentes"),
 0135            new(id, "Segurança da Informação"),
 0136            new(id, "Sistemas Embarcados"),
 0137            new(id, "Testes e Verificação de Software")
 0138        ];
 139    }
 140
 141    private static List<Discipline> GetDireitoDisciplines(Guid id)
 142    {
 0143        return
 0144        [
 0145            new(id, "Bases Filosóficas"),
 0146            new(id, "Comunicação e Argumentação Jurídica"),
 0147            new(id, "Homem, Sociedade e Direito"),
 0148            new(id, "Política e Estado em Foco"),
 0149            new(id, "Teoria Geral do Direito"),
 0150            //
 0151            new(id, "Constituição: Teoria e Lógica Central"),
 0152            new(id, "Economia"),
 0153            new(id, "Processo e Justiça em Foco: Teoria Geral e Sistema"),
 0154            new(id, "Psicologia e Direito"),
 0155            new(id, "Teoria do Crime"),
 0156            new(id, "Teoria Geral do Direito Privado"),
 0157            //
 0158            new(id, "Das Relações Obrigacionais"),
 0159            new(id, "Empresa: Teoria Geral"),
 0160            new(id, "Organização do Estado e Carreiras Jurídicas em Foco"),
 0161            new(id, "Processo de Conhecimento"),
 0162            new(id, "Teoria da Pena"),
 0163            //
 0164            new(id, "Contratos Teoria e Prática em Foco"),
 0165            new(id, "Crimes em Espécie I"),
 0166            new(id, "Processo de Conhecimento II"),
 0167            new(id, "Relações Individuais de Trabalho"),
 0168            new(id, "Societário e Contratos Mercantis"),
 0169            new(id, "Tópicos De Direito Empresarial e Societário"),
 0170            //
 0171            new(id, "Administração Pública: Teoria Geral"),
 0172            new(id, "Crimes em Espécie II"),
 0173            new(id, "Direito Civil das Coisas"),
 0174            new(id, "Recursos Cíveis"),
 0175            new(id, "Relações Coletivas de Trabalho"),
 0176            new(id, "Soluções Adequadas de Conflitos em Foco"),
 0177            //
 0178            new(id, "Atuação na Área Cível em Foco"),
 0179            new(id, "Direito das Famílias"),
 0180            new(id, "Estado e Finanças Públicas"),
 0181            new(id, "Execução Civil"),
 0182            new(id, "Negócios Jurídicos Administrativos"),
 0183            new(id, "Ordem e Previdência Social"),
 0184            //
 0185            new(id, "Atendimento na Área Cível em Foco"),
 0186            new(id, "Direito Internacional"),
 0187            new(id, "Processo Penal: Teoria Geral"),
 0188            new(id, "Responsabilidade Civil e Consumidor"),
 0189            new(id, "Sistema Tributário Nacional"),
 0190            new(id, "Sucessões"),
 0191            //
 0192            new(id, "Atuação na Àrea Trabalhista em Foco"),
 0193            new(id, "Deontologia e Ética"),
 0194            new(id, "Direito Constitucional Avançado"),
 0195            new(id, "Direito Processual do Trabalho"),
 0196            new(id, "Pesquisa e Projeto "),
 0197            new(id, "Processo Penal Especial"),
 0198            new(id, "Tributos"),
 0199            //
 0200            new(id, "Atuação na Área Criminal em Foco"),
 0201            new(id, "Direito Ambiental"),
 0202            new(id, "Direito e Inovação"),
 0203            new(id, "Hermenêutica Jurídica"),
 0204            new(id, "Optativa I"),
 0205            new(id, "Recuperação Judicial e Falência"),
 0206            new(id, "Trabalho de Conclusão de Curso I"),
 0207            //
 0208            new(id, "Atuação na Área Pública em Foco"),
 0209            new(id, "Direito da Criança e do Adolescente e do Idoso"),
 0210            new(id, "Direitos Humanos"),
 0211            new(id, "Optativa II"),
 0212            new(id, "Optativa III"),
 0213            new(id, "Processo Constitucional"),
 0214            new(id, "Trabalho de Conclusão de Curso II"),
 0215        ];
 216    }
 217
 218    private static CourseCurriculum GetAdsCourseCurriculum(Institution institution, List<Discipline> disciplines)
 219    {
 0220        var adsCC = new CourseCurriculum(institution.Id, institution.Courses[1].Id, "Grade ADS 1.0");
 0221        adsCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 0222        adsCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 0223        adsCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 0224        adsCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 0225        adsCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 0226        adsCC.Links.Add(new(disciplines[05].Id, 1, 4, 60));
 227        //
 0228        adsCC.Links.Add(new(disciplines[06].Id, 2, 4, 72));
 0229        adsCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 0230        adsCC.Links.Add(new(disciplines[08].Id, 2, 4, 72));
 0231        adsCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 0232        adsCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 0233        adsCC.Links.Add(new(disciplines[11].Id, 2, 4, 60));
 234        //
 0235        adsCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 0236        adsCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 0237        adsCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 0238        adsCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 0239        adsCC.Links.Add(new(disciplines[16].Id, 3, 4, 60));
 0240        adsCC.Links.Add(new(disciplines[17].Id, 3, 4, 72));
 241        //
 0242        adsCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 0243        adsCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 0244        adsCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 0245        adsCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 0246        adsCC.Links.Add(new(disciplines[22].Id, 4, 4, 60));
 0247        adsCC.Links.Add(new(disciplines[23].Id, 4, 4, 72));
 248        //
 0249        adsCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 0250        adsCC.Links.Add(new(disciplines[25].Id, 5, 4, 72));
 0251        adsCC.Links.Add(new(disciplines[26].Id, 5, 2, 30));
 0252        adsCC.Links.Add(new(disciplines[27].Id, 5, 4, 60));
 0253        adsCC.Links.Add(new(disciplines[28].Id, 5, 4, 72));
 0254        adsCC.Links.Add(new(disciplines[29].Id, 5, 4, 72));
 0255        adsCC.Links.Add(new(disciplines[30].Id, 5, 4, 72));
 256
 0257        return adsCC;
 258    }
 259
 260    private static CourseCurriculum GetDireitoCourseCurriculum(Institution institution, List<Discipline> disciplines)
 261    {
 0262        var direitoCC = new CourseCurriculum(institution.Id, institution.Courses[4].Id, "Grade Direito 1.0");
 263
 0264        direitoCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 0265        direitoCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 0266        direitoCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 0267        direitoCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 0268        direitoCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 269        //
 0270        direitoCC.Links.Add(new(disciplines[05].Id, 2, 4, 72));
 0271        direitoCC.Links.Add(new(disciplines[06].Id, 2, 2, 36));
 0272        direitoCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 0273        direitoCC.Links.Add(new(disciplines[08].Id, 2, 2, 36));
 0274        direitoCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 0275        direitoCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 276        //
 0277        direitoCC.Links.Add(new(disciplines[11].Id, 3, 4, 72));
 0278        direitoCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 0279        direitoCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 0280        direitoCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 0281        direitoCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 282        //
 0283        direitoCC.Links.Add(new(disciplines[16].Id, 4, 4, 72));
 0284        direitoCC.Links.Add(new(disciplines[17].Id, 4, 4, 72));
 0285        direitoCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 0286        direitoCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 0287        direitoCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 0288        direitoCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 289        //
 0290        direitoCC.Links.Add(new(disciplines[22].Id, 5, 4, 72));
 0291        direitoCC.Links.Add(new(disciplines[23].Id, 5, 4, 72));
 0292        direitoCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 0293        direitoCC.Links.Add(new(disciplines[25].Id, 5, 3, 60));
 0294        direitoCC.Links.Add(new(disciplines[26].Id, 5, 3, 60));
 0295        direitoCC.Links.Add(new(disciplines[27].Id, 5, 4, 72));
 296        //
 297        //
 0298        direitoCC.Links.Add(new(disciplines[28].Id, 6, 4, 72));
 0299        direitoCC.Links.Add(new(disciplines[29].Id, 6, 4, 72));
 0300        direitoCC.Links.Add(new(disciplines[30].Id, 6, 4, 72));
 0301        direitoCC.Links.Add(new(disciplines[31].Id, 6, 3, 60));
 0302        direitoCC.Links.Add(new(disciplines[32].Id, 6, 4, 72));
 0303        direitoCC.Links.Add(new(disciplines[33].Id, 6, 4, 72));
 304        //
 0305        direitoCC.Links.Add(new(disciplines[34].Id, 7, 4, 72));
 0306        direitoCC.Links.Add(new(disciplines[35].Id, 7, 4, 72));
 0307        direitoCC.Links.Add(new(disciplines[36].Id, 7, 4, 72));
 0308        direitoCC.Links.Add(new(disciplines[37].Id, 7, 3, 60));
 0309        direitoCC.Links.Add(new(disciplines[38].Id, 7, 4, 72));
 0310        direitoCC.Links.Add(new(disciplines[39].Id, 7, 4, 72));
 311        //
 0312        direitoCC.Links.Add(new(disciplines[40].Id, 8, 4, 72));
 0313        direitoCC.Links.Add(new(disciplines[41].Id, 8, 3, 72));
 0314        direitoCC.Links.Add(new(disciplines[42].Id, 8, 2, 36));
 0315        direitoCC.Links.Add(new(disciplines[43].Id, 8, 4, 72));
 0316        direitoCC.Links.Add(new(disciplines[44].Id, 8, 2, 36));
 0317        direitoCC.Links.Add(new(disciplines[45].Id, 8, 4, 72));
 0318        direitoCC.Links.Add(new(disciplines[46].Id, 8, 4, 72));
 319        //
 0320        direitoCC.Links.Add(new(disciplines[47].Id, 9, 2, 72));
 0321        direitoCC.Links.Add(new(disciplines[48].Id, 9, 2, 36));
 0322        direitoCC.Links.Add(new(disciplines[49].Id, 9, 2, 36));
 0323        direitoCC.Links.Add(new(disciplines[50].Id, 9, 2, 36));
 0324        direitoCC.Links.Add(new(disciplines[51].Id, 9, 2, 72));
 0325        direitoCC.Links.Add(new(disciplines[52].Id, 9, 4, 72));
 0326        direitoCC.Links.Add(new(disciplines[53].Id, 9, 2, 36));
 327        //
 0328        direitoCC.Links.Add(new(disciplines[54].Id, 10, 2, 72));
 0329        direitoCC.Links.Add(new(disciplines[55].Id, 10, 3, 60));
 0330        direitoCC.Links.Add(new(disciplines[56].Id, 10, 2, 40));
 0331        direitoCC.Links.Add(new(disciplines[57].Id, 10, 2, 36));
 0332        direitoCC.Links.Add(new(disciplines[58].Id, 10, 2, 36));
 0333        direitoCC.Links.Add(new(disciplines[59].Id, 10, 2, 72));
 0334        direitoCC.Links.Add(new(disciplines[60].Id, 10, 4, 36));
 335
 0336        return direitoCC;
 337    }
 338}