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));
        }
Exemplo n.º 2
0
 public Result RealizarInscricao(TurmaBase turma, DateTime inscricaoEm)
 {
     if (turma.PossoFazerInscrever(this, inscricaoEm) is var resultado && resultado.IsFailure)
     {
         return(Result.Failure(resultado.Error));
     }
     _inscricoes.Add(Inscricao.Criar(turma.Id, turma.RecuperarDataEncerramento(inscricaoEm)));
     turma.IncrementarInscricoes();
     return(Result.Ok());
 }
Exemplo n.º 3
0
 public async Task <TurmaBase> AdicionarAsync(TurmaBase turma)
 {
     return((await _contexto.Turmas.AddAsync(turma)).Entity);
 }