< Summary - Syki

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

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")]
 171610public record SeedInstitutionBasicDataCommand(Guid InstitutionId) : ICommand;
 11
 12public class SeedInstitutionBasicDataCommandHandler(SykiDbContext ctx) : ICommandHandler<SeedInstitutionBasicDataCommand
 13{
 14    public async Task Handle(CommandId commandId, SeedInstitutionBasicDataCommand command)
 15    {
 16        if (Env.IsTesting()) return;
 17
 18        var id = command.InstitutionId;
 19        var institution = await ctx.Institutions.FirstAsync(f => f.Id == id);
 20
 21        AddAcademicPeriods(institution);
 22        AddCampi(institution);
 23        AddCourses(institution);
 24
 25        var adsDisciplines = GetAdsDisciplines(id);
 26        var direitoDisciplines = GetDireitoDisciplines(id);
 27
 28        institution.Disciplines = [];
 29        institution.Disciplines.AddRange(adsDisciplines);
 30        institution.Disciplines.AddRange(direitoDisciplines);
 31
 32        institution.Courses[1].Disciplines = adsDisciplines;
 33        institution.Courses[4].Disciplines = direitoDisciplines;
 34
 35        var adsCC = GetAdsCourseCurriculum(institution, adsDisciplines);
 36        ctx.Add(adsCC);
 37        var courseOfferingAds = new CourseOffering(
 38            id,
 39            institution.Campi[2].Id,
 40            institution.Courses[1].Id,
 41            adsCC.Id,
 42            institution.AcademicPeriods[0].Id,
 43            Shift.Noturno
 44        );
 45        ctx.Add(courseOfferingAds);
 46
 47        var direitoCC = GetDireitoCourseCurriculum(institution, direitoDisciplines);
 48        ctx.Add(direitoCC);
 49        var courseOfferingDireito = new CourseOffering(
 50            id,
 51            institution.Campi[2].Id,
 52            institution.Courses[4].Id,
 53            direitoCC.Id,
 54            institution.AcademicPeriods[0].Id,
 55            Shift.Noturno
 56        );
 57        ctx.Add(courseOfferingDireito);
 58
 59        ctx.AddCommand(id, new SeedInstitutionUsersCommand(id, courseOfferingDireito.Id, courseOfferingAds.Id), parentId
 60    }
 61
 62    private static void AddAcademicPeriods(Institution institution)
 63    {
 64        var year = DateTime.UtcNow.Year;
 65        institution.AcademicPeriods =
 66        [
 67            new($"{year}.1", institution.Id, new DateOnly(year, 02, 01), new DateOnly(year, 06, 01)),
 68            new($"{year}.2", institution.Id, new DateOnly(year, 07, 03), new DateOnly(year, 12, 05)),
 69        ];
 70    }
 71
 72    private static void AddCampi(Institution institution)
 73    {
 74        institution.Campi =
 75        [
 76            new(institution.Id, "Garoa", BrazilState.PE, "Garanhuns", 150),
 77            new(institution.Id, "Sertão", BrazilState.PE, "Petrolina", 500),
 78            new(institution.Id, "Agreste", BrazilState.PE, "Caruaru", 750),
 79            new(institution.Id, "Suassuna", BrazilState.PE, "Recife", 1200),
 80        ];
 81    }
 82
 83    private static void AddCourses(Institution institution)
 84    {
 85        institution.Courses =
 86        [
 87            new(institution.Id, "Administração", CourseType.Mestrado),
 88            new(institution.Id, "Análise e Desenvolvimento de Sistemas", CourseType.Bacharelado),
 89            new(institution.Id, "Arquitetura e Urbanismo", CourseType.Tecnologo),
 90            new(institution.Id, "Ciência da Computação", CourseType.Bacharelado),
 91            new(institution.Id, "Direito", CourseType.Bacharelado),
 92            new(institution.Id, "Engenharia Civil", CourseType.Bacharelado),
 93            new(institution.Id, "Engenharia Mecânica", CourseType.Bacharelado),
 94            new(institution.Id, "Engenharia de Produção", CourseType.PosDoutorado),
 95            new(institution.Id, "Pedagogia", CourseType.Licenciatura),
 96        ];
 97    }
 98
 99    private static List<Discipline> GetAdsDisciplines(Guid id)
 100    {
 101        return
 102        [
 103            new(id, "Matemática Discreta"),
 104            new(id, "Pensamento Computacional e Algoritmos"),
 105            new(id, "Design de Interação Humano-Máquina"),
 106            new(id, "Introdução à Redes de Computadores"),
 107            new(id, "Introdução ao Desenvolvimento Web"),
 108            new(id, "Projeto Integrador I: Concepção e Prototipação"),
 109            //
 110            new(id, "Arquitetura de Computadores e Sistemas Operacionais"),
 111            new(id, "Banco de Dados"),
 112            new(id, "Estrutura de Dados"),
 113            new(id, "Informática e Sociedade"),
 114            new(id, "Programação Orientada a Objetos"),
 115            new(id, "Projeto Integrador II: Modelagem de Banco de Dados"),
 116            //
 117            new(id, "Análise e Projeto de Software"),
 118            new(id, "Arquitetura de Software"),
 119            new(id, "Computação em Nuvem e Web Services"),
 120            new(id, "Estatística Aplicada"),
 121            new(id, "Projeto Integrador III: Desenvolvimento Full Stack"),
 122            new(id, "Configuração e Manutenção de Software"),
 123            //
 124            new(id, "Inovação e Empreendedorismo"),
 125            new(id, "Análise e Visualização de Dados"),
 126            new(id, "Desenvolvimentos de Aplicações Móveis"),
 127            new(id, "Gestão de Projetos e Governança de TI"),
 128            new(id, "Projeto Integrador IV: Aplicações Móveis"),
 129            new(id, "Sistemas Distribuídos"),
 130            //
 131            new(id, "Big Data e Data Science"),
 132            new(id, "Inteligência Artificial"),
 133            new(id, "Libras"),
 134            new(id, "Projeto Integrador V: Sistemas Inteligentes"),
 135            new(id, "Segurança da Informação"),
 136            new(id, "Sistemas Embarcados"),
 137            new(id, "Testes e Verificação de Software")
 138        ];
 139    }
 140
 141    private static List<Discipline> GetDireitoDisciplines(Guid id)
 142    {
 143        return
 144        [
 145            new(id, "Bases Filosóficas"),
 146            new(id, "Comunicação e Argumentação Jurídica"),
 147            new(id, "Homem, Sociedade e Direito"),
 148            new(id, "Política e Estado em Foco"),
 149            new(id, "Teoria Geral do Direito"),
 150            //
 151            new(id, "Constituição: Teoria e Lógica Central"),
 152            new(id, "Economia"),
 153            new(id, "Processo e Justiça em Foco: Teoria Geral e Sistema"),
 154            new(id, "Psicologia e Direito"),
 155            new(id, "Teoria do Crime"),
 156            new(id, "Teoria Geral do Direito Privado"),
 157            //
 158            new(id, "Das Relações Obrigacionais"),
 159            new(id, "Empresa: Teoria Geral"),
 160            new(id, "Organização do Estado e Carreiras Jurídicas em Foco"),
 161            new(id, "Processo de Conhecimento"),
 162            new(id, "Teoria da Pena"),
 163            //
 164            new(id, "Contratos Teoria e Prática em Foco"),
 165            new(id, "Crimes em Espécie I"),
 166            new(id, "Processo de Conhecimento II"),
 167            new(id, "Relações Individuais de Trabalho"),
 168            new(id, "Societário e Contratos Mercantis"),
 169            new(id, "Tópicos De Direito Empresarial e Societário"),
 170            //
 171            new(id, "Administração Pública: Teoria Geral"),
 172            new(id, "Crimes em Espécie II"),
 173            new(id, "Direito Civil das Coisas"),
 174            new(id, "Recursos Cíveis"),
 175            new(id, "Relações Coletivas de Trabalho"),
 176            new(id, "Soluções Adequadas de Conflitos em Foco"),
 177            //
 178            new(id, "Atuação na Área Cível em Foco"),
 179            new(id, "Direito das Famílias"),
 180            new(id, "Estado e Finanças Públicas"),
 181            new(id, "Execução Civil"),
 182            new(id, "Negócios Jurídicos Administrativos"),
 183            new(id, "Ordem e Previdência Social"),
 184            //
 185            new(id, "Atendimento na Área Cível em Foco"),
 186            new(id, "Direito Internacional"),
 187            new(id, "Processo Penal: Teoria Geral"),
 188            new(id, "Responsabilidade Civil e Consumidor"),
 189            new(id, "Sistema Tributário Nacional"),
 190            new(id, "Sucessões"),
 191            //
 192            new(id, "Atuação na Àrea Trabalhista em Foco"),
 193            new(id, "Deontologia e Ética"),
 194            new(id, "Direito Constitucional Avançado"),
 195            new(id, "Direito Processual do Trabalho"),
 196            new(id, "Pesquisa e Projeto "),
 197            new(id, "Processo Penal Especial"),
 198            new(id, "Tributos"),
 199            //
 200            new(id, "Atuação na Área Criminal em Foco"),
 201            new(id, "Direito Ambiental"),
 202            new(id, "Direito e Inovação"),
 203            new(id, "Hermenêutica Jurídica"),
 204            new(id, "Optativa I"),
 205            new(id, "Recuperação Judicial e Falência"),
 206            new(id, "Trabalho de Conclusão de Curso I"),
 207            //
 208            new(id, "Atuação na Área Pública em Foco"),
 209            new(id, "Direito da Criança e do Adolescente e do Idoso"),
 210            new(id, "Direitos Humanos"),
 211            new(id, "Optativa II"),
 212            new(id, "Optativa III"),
 213            new(id, "Processo Constitucional"),
 214            new(id, "Trabalho de Conclusão de Curso II"),
 215        ];
 216    }
 217
 218    private static CourseCurriculum GetAdsCourseCurriculum(Institution institution, List<Discipline> disciplines)
 219    {
 220        var adsCC = new CourseCurriculum(institution.Id, institution.Courses[1].Id, "Grade ADS 1.0");
 221        adsCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 222        adsCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 223        adsCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 224        adsCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 225        adsCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 226        adsCC.Links.Add(new(disciplines[05].Id, 1, 4, 60));
 227        //
 228        adsCC.Links.Add(new(disciplines[06].Id, 2, 4, 72));
 229        adsCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 230        adsCC.Links.Add(new(disciplines[08].Id, 2, 4, 72));
 231        adsCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 232        adsCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 233        adsCC.Links.Add(new(disciplines[11].Id, 2, 4, 60));
 234        //
 235        adsCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 236        adsCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 237        adsCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 238        adsCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 239        adsCC.Links.Add(new(disciplines[16].Id, 3, 4, 60));
 240        adsCC.Links.Add(new(disciplines[17].Id, 3, 4, 72));
 241        //
 242        adsCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 243        adsCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 244        adsCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 245        adsCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 246        adsCC.Links.Add(new(disciplines[22].Id, 4, 4, 60));
 247        adsCC.Links.Add(new(disciplines[23].Id, 4, 4, 72));
 248        //
 249        adsCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 250        adsCC.Links.Add(new(disciplines[25].Id, 5, 4, 72));
 251        adsCC.Links.Add(new(disciplines[26].Id, 5, 2, 30));
 252        adsCC.Links.Add(new(disciplines[27].Id, 5, 4, 60));
 253        adsCC.Links.Add(new(disciplines[28].Id, 5, 4, 72));
 254        adsCC.Links.Add(new(disciplines[29].Id, 5, 4, 72));
 255        adsCC.Links.Add(new(disciplines[30].Id, 5, 4, 72));
 256
 257        return adsCC;
 258    }
 259
 260    private static CourseCurriculum GetDireitoCourseCurriculum(Institution institution, List<Discipline> disciplines)
 261    {
 262        var direitoCC = new CourseCurriculum(institution.Id, institution.Courses[4].Id, "Grade Direito 1.0");
 263
 264        direitoCC.Links.Add(new(disciplines[00].Id, 1, 4, 72));
 265        direitoCC.Links.Add(new(disciplines[01].Id, 1, 4, 72));
 266        direitoCC.Links.Add(new(disciplines[02].Id, 1, 4, 72));
 267        direitoCC.Links.Add(new(disciplines[03].Id, 1, 4, 72));
 268        direitoCC.Links.Add(new(disciplines[04].Id, 1, 4, 72));
 269        //
 270        direitoCC.Links.Add(new(disciplines[05].Id, 2, 4, 72));
 271        direitoCC.Links.Add(new(disciplines[06].Id, 2, 2, 36));
 272        direitoCC.Links.Add(new(disciplines[07].Id, 2, 4, 72));
 273        direitoCC.Links.Add(new(disciplines[08].Id, 2, 2, 36));
 274        direitoCC.Links.Add(new(disciplines[09].Id, 2, 4, 72));
 275        direitoCC.Links.Add(new(disciplines[10].Id, 2, 4, 72));
 276        //
 277        direitoCC.Links.Add(new(disciplines[11].Id, 3, 4, 72));
 278        direitoCC.Links.Add(new(disciplines[12].Id, 3, 4, 72));
 279        direitoCC.Links.Add(new(disciplines[13].Id, 3, 4, 72));
 280        direitoCC.Links.Add(new(disciplines[14].Id, 3, 4, 72));
 281        direitoCC.Links.Add(new(disciplines[15].Id, 3, 4, 72));
 282        //
 283        direitoCC.Links.Add(new(disciplines[16].Id, 4, 4, 72));
 284        direitoCC.Links.Add(new(disciplines[17].Id, 4, 4, 72));
 285        direitoCC.Links.Add(new(disciplines[18].Id, 4, 4, 72));
 286        direitoCC.Links.Add(new(disciplines[19].Id, 4, 4, 72));
 287        direitoCC.Links.Add(new(disciplines[20].Id, 4, 4, 72));
 288        direitoCC.Links.Add(new(disciplines[21].Id, 4, 4, 72));
 289        //
 290        direitoCC.Links.Add(new(disciplines[22].Id, 5, 4, 72));
 291        direitoCC.Links.Add(new(disciplines[23].Id, 5, 4, 72));
 292        direitoCC.Links.Add(new(disciplines[24].Id, 5, 4, 72));
 293        direitoCC.Links.Add(new(disciplines[25].Id, 5, 3, 60));
 294        direitoCC.Links.Add(new(disciplines[26].Id, 5, 3, 60));
 295        direitoCC.Links.Add(new(disciplines[27].Id, 5, 4, 72));
 296        //
 297        //
 298        direitoCC.Links.Add(new(disciplines[28].Id, 6, 4, 72));
 299        direitoCC.Links.Add(new(disciplines[29].Id, 6, 4, 72));
 300        direitoCC.Links.Add(new(disciplines[30].Id, 6, 4, 72));
 301        direitoCC.Links.Add(new(disciplines[31].Id, 6, 3, 60));
 302        direitoCC.Links.Add(new(disciplines[32].Id, 6, 4, 72));
 303        direitoCC.Links.Add(new(disciplines[33].Id, 6, 4, 72));
 304        //
 305        direitoCC.Links.Add(new(disciplines[34].Id, 7, 4, 72));
 306        direitoCC.Links.Add(new(disciplines[35].Id, 7, 4, 72));
 307        direitoCC.Links.Add(new(disciplines[36].Id, 7, 4, 72));
 308        direitoCC.Links.Add(new(disciplines[37].Id, 7, 3, 60));
 309        direitoCC.Links.Add(new(disciplines[38].Id, 7, 4, 72));
 310        direitoCC.Links.Add(new(disciplines[39].Id, 7, 4, 72));
 311        //
 312        direitoCC.Links.Add(new(disciplines[40].Id, 8, 4, 72));
 313        direitoCC.Links.Add(new(disciplines[41].Id, 8, 3, 72));
 314        direitoCC.Links.Add(new(disciplines[42].Id, 8, 2, 36));
 315        direitoCC.Links.Add(new(disciplines[43].Id, 8, 4, 72));
 316        direitoCC.Links.Add(new(disciplines[44].Id, 8, 2, 36));
 317        direitoCC.Links.Add(new(disciplines[45].Id, 8, 4, 72));
 318        direitoCC.Links.Add(new(disciplines[46].Id, 8, 4, 72));
 319        //
 320        direitoCC.Links.Add(new(disciplines[47].Id, 9, 2, 72));
 321        direitoCC.Links.Add(new(disciplines[48].Id, 9, 2, 36));
 322        direitoCC.Links.Add(new(disciplines[49].Id, 9, 2, 36));
 323        direitoCC.Links.Add(new(disciplines[50].Id, 9, 2, 36));
 324        direitoCC.Links.Add(new(disciplines[51].Id, 9, 2, 72));
 325        direitoCC.Links.Add(new(disciplines[52].Id, 9, 4, 72));
 326        direitoCC.Links.Add(new(disciplines[53].Id, 9, 2, 36));
 327        //
 328        direitoCC.Links.Add(new(disciplines[54].Id, 10, 2, 72));
 329        direitoCC.Links.Add(new(disciplines[55].Id, 10, 3, 60));
 330        direitoCC.Links.Add(new(disciplines[56].Id, 10, 2, 40));
 331        direitoCC.Links.Add(new(disciplines[57].Id, 10, 2, 36));
 332        direitoCC.Links.Add(new(disciplines[58].Id, 10, 2, 36));
 333        direitoCC.Links.Add(new(disciplines[59].Id, 10, 2, 72));
 334        direitoCC.Links.Add(new(disciplines[60].Id, 10, 4, 36));
 335
 336        return direitoCC;
 337    }
 338}

Methods/Properties

get_InstitutionId()