예제 #1
0
        public IActionResult RealizarInscricao(string alunoId, [FromBody] InscricaoInputModel novaInscricao)
        {
            try
            {
                if (_alunosRepositorio.Recuperar(alunoId) is var aluno && aluno.EhFalha)
                {
                    return(StatusCode(aluno.Falha.Codigo, aluno.Falha));
                }

                var turma = _turmasRepositorio.Recuperar(novaInscricao.TurmaId);
                if (turma == null)
                {
                    return(BadRequest("Turma informada é inválida"));
                }

                if (aluno.Sucesso.RealizarInscricao(turma) is var inscricao && inscricao.EhFalha)
                {
                    return(StatusCode(inscricao.Falha.Codigo, inscricao.Falha));
                }

                if (_alunosRepositorio.Atualizar(aluno.Sucesso) is var resultado && resultado.EhFalha)
                {
                    return(StatusCode(resultado.Falha.Codigo, resultado.Falha));
                }

                return(CreatedAtAction(nameof(RecuperarInscricao), new { alunoId, inscricao.Sucesso.Id },
                                       new InscricaoViewModel(aluno.Sucesso.Id, new InscricaoViewModel.TurmaViewModel(inscricao.Sucesso.Turma.Id, inscricao.Sucesso.Turma.Descricao), inscricao.Sucesso.InscritoEm)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, new { error = e.Message }));
            }
        }
예제 #2
0
        public IActionResult RealizarInscricao(string alunoId, [FromBody] InscricaoInputModel novaInscricao)
        {
            try
            {
                var aluno = _alunosRepositorio.Recuperar(alunoId);
                if (aluno == null)
                {
                    return(NotFound("Aluno inválido"));
                }

                var turma = _turmasRepositorio.Recuperar(novaInscricao.TurmaId);
                if (turma == null)
                {
                    return(BadRequest("Turma informada é inválida"));
                }

                var inscricao = aluno.RealizarInscricao(turma);
                _alunosRepositorio.Atualizar(aluno);

                return(CreatedAtAction(nameof(RecuperarInscricao), new { alunoId, inscricao.Id },
                                       new InscricaoViewModel(aluno.Id, new InscricaoViewModel.TurmaViewModel(inscricao.Turma.Id, inscricao.Turma.Descricao), inscricao.InscritoEm)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, new { error = e.Message }));
            }
        }
예제 #3
0
        public Resultado <Aluno.Inscricao, Falha> Executar(RealizarInscricaoComando comando)
        {
            try
            {
                if (_alunosRepositorio.Recuperar(comando.AlunoId) is var aluno && aluno.EhFalha)
                {
                    return(aluno.Falha);
                }

                if (_turmasRepositorio.Recuperar(comando.TurmaId) is var turma && turma.EhFalha)
                {
                    return(turma.Falha);
                }

                if (aluno.Sucesso.RealizarInscricao(turma.Sucesso) is var inscricao && inscricao.EhFalha)
                {
                    return(inscricao.Falha);
                }

                if (_alunosRepositorio.Atualizar(aluno.Sucesso) is var resultado && resultado.EhFalha)
                {
                    return(resultado.Falha);
                }
                return(resultado.Sucesso.Inscricoes.FirstOrDefault(i => i.Id.Equals(inscricao.Sucesso.Id)));
            }
            catch (Exception e)
            {
                return(Falha.Nova(500, "Erro ao realizar inscrição"));
            }
        }