Exemplo n.º 1
0
        public async Task AdicionaInscricoesEmMatriculaDeEstudante()
        {
            var cmdCriaEstudante = CriarComandoDeCriarEstudante();

            await CriarEstudante(cmdCriaEstudante);

            var cmdMatricula = CriaComandoMatricula(cmdCriaEstudante.Id);

            await CriaMatricula(cmdMatricula);

            var turma = _f7DbContext.TurmaDbSet
                        .Include(x => x.Disciplina)
                        .Include(x => x.Horarios)
                        .Include(x => x.Semestre)
                        .Include(x => x.Professor).First();

            var cmd = new AddInscricoesMatriculaEstudanteCommand()
            {
                MatriculaId = cmdMatricula.MatriculaId,
                TurmaIds    = new[] { turma.Id }
            };

            await DoPostRequest("/Pessoa/AddInscricoesMatriculaEstudante", cmd);

            var estudante = _f7DbContext.PessoaUsuarioDbSet
                            .Include(x => x.Matriculas).ThenInclude(x => x.Inscricoes)
                            .FirstOrDefault(x => x.Id == cmdCriaEstudante.Id);

            estudante.Should().NotBeNull();
            estudante?.Matriculas.Should().HaveCount(1);
            estudante?.Matriculas.First().Inscricoes.Should().HaveCount(1);
        }
Exemplo n.º 2
0
        public Task <Unit> Handle(AddInscricoesMatriculaEstudanteCommand request, CancellationToken cancellationToken)
        {
            var config = _f7DbContext.Configuration;

            var matricula = _f7DbContext.MatriculaDbSet.Include(x => x.Inscricoes).ThenInclude(x => x.Turma)
                            .FirstOrDefault(x => x.Id == request.MatriculaId);


            if (matricula != null)
            {
                var turmasAtuais   = matricula.Inscricoes.Where(x => x.Turma.Semestre == config.SemestreAtual).Select(x => x.Turma.Id).ToList();
                var novasTurmasIds = request.TurmaIds.Except(turmasAtuais);

                var turmasExcluidas = turmasAtuais.Except(request.TurmaIds);

                matricula.Inscricoes.RemoveAll(x => x.Turma.Semestre == config.SemestreAtual && turmasExcluidas.Contains(x.Turma.Id));

                var turmas     = _f7DbContext.TurmaDbSet.Where(x => novasTurmasIds.Contains(x.Id));
                var inscricoes = turmas.Select(turma => new Inscricao()
                {
                    Id            = Guid.NewGuid(),
                    Matricula     = matricula,
                    MatriculaId   = matricula.Id,
                    Turma         = turma,
                    DataInscricao = DateTime.Now
                }).ToList();

                matricula.Inscricoes.AddRange(inscricoes);

                _f7DbContext.AddRange(inscricoes);
                _f7DbContext.SaveChanges();
            }

            return(Unit.Task);
        }
Exemplo n.º 3
0
 public IActionResult AddInscricoesMatriculaEstudante([FromBody] AddInscricoesMatriculaEstudanteCommand cmd)
 {
     _mediator.Send(cmd);
     return(Ok());
 }