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); }
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); }
public IActionResult AddInscricoesMatriculaEstudante([FromBody] AddInscricoesMatriculaEstudanteCommand cmd) { _mediator.Send(cmd); return(Ok()); }