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

Methods/Properties

get_InstitutionId()