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 })); } }
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 })); } }
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")); } }