Exemplo n.º 1
0
        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 }));
            }
        }