public async Task <ActionResult> CriarAsync([FromBody] NovaTurmaInputModel novaTurmaInputModel) { Result <TurmaBase> turma; if (novaTurmaInputModel.ComDuracao) { turma = TurmaBase.CriarComDuracao( novaTurmaInputModel.Descricao, novaTurmaInputModel.LimiteIdade, novaTurmaInputModel.QuantidadeMinimaAlunos, novaTurmaInputModel.QuantidadeMaximaAlunos, novaTurmaInputModel.DuracaoTipo, novaTurmaInputModel.DuracaoValor); } else { turma = TurmaBase.CriarComDuracaoIlimitada( novaTurmaInputModel.Descricao, novaTurmaInputModel.LimiteIdade, novaTurmaInputModel.QuantidadeMinimaAlunos, novaTurmaInputModel.QuantidadeMaximaAlunos); } if (turma.IsFailure) { return(BadRequest(turma.Error)); } await _turmasRepositorio.AdicionarAsync(turma.Value); await _unitOfWork.CommitAsync(); return(CreatedAtAction(nameof(TurmaPorId), new { id = turma.Value.Id }, null)); }
public async Task <IActionResult> Novo([FromBody] NovaTurmaInputModel input) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var turma = Turma.CriarFechada(input.Descricao, input.LimiteAlunos, input.IdadeMinima, input.Duracao, input.ValorMensal); await _turmasRepositorio.AdicionarAsync(turma); await _escolasContexto.SaveChangesAsync(); return(Ok(turma)); } catch (InvalidOperationException ex) { return(BadRequest(ex.Message)); } catch (Exception e) { return(StatusCode(500, new { error = e.Message })); } }