예제 #1
0
        public async Task <int> AdicionarOpcaoAvaliacaoAsync(int questaoId, string descricao, bool verdadeira)
        {
            if (verdadeira)
            {
                var questao = await _questaoRepository.ObterComOpcoesAsync(questaoId);

                if (questao.Tipo == 1 && questao.Opcoes.Find(x => x.Verdadeira) != null)
                {
                    throw new DomainException("Já existe uma opção cadastrada como verdadeira para essa questão!");
                }
            }

            if (string.IsNullOrWhiteSpace(descricao))
            {
                throw new DomainException("A descrição da opção não pode ser vazia!");
            }

            var opcao = new OpcaoAvaliacao()
            {
                Descricao  = descricao,
                QuestaoId  = questaoId,
                Verdadeira = verdadeira
            };

            _opcaoAvaliacaoRepository.Adicionar(opcao);

            await _opcaoAvaliacaoRepository.SaveChangesAsync();

            return(opcao.Id);
        }
예제 #2
0
        public async Task <int> AdicionarOpcaoAvaliacaoAsync(int questaoId, string descricao, bool verdadeira)
        {
            ValidarOpcaoAvaliacao(questaoId, verdadeira);

            var opcaoAvaliacao = new OpcaoAvaliacao()
            {
                QuestaoId = questaoId, Descricao = descricao, Verdadeira = verdadeira
            };
            var questao = await _questaoAvaliacaoRepository.ObterAsync(questaoId);

            if (questao.Avaliacao.Publicacoes?.Count > 0)
            {
                throw new DomainException("Não é permitido alterar uma avaliação que já foi publicada!");
            }
            var erros = opcaoAvaliacao.Validate();

            if (erros.Length == 0)
            {
                await _opcaoAvaliacaoRepository.AdicionarAsync(opcaoAvaliacao);

                _opcaoAvaliacaoRepository.SaveChanges();

                return(opcaoAvaliacao.Id);
            }
            else
            {
                throw new DomainException(erros);
            }
        }
예제 #3
0
        public async Task <ActionResult <OpcaoAvaliacao> > PostOpcaoAvaliacao(OpcaoAvaliacao item)
        {
            _context.OpcaoAvaliacao.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetOpcaoAvaliacao), new { id = item.Id }, item));
        }
예제 #4
0
        public async Task <IActionResult> PutOpcaoAvaliacao(int id, OpcaoAvaliacao item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task <IActionResult> Edit(int id, [Bind("Id,QuestaoId,Descricao,Verdadeira")] OpcaoAvaliacao opcaoAvaliacao)
        {
            if (id != opcaoAvaliacao.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var result = await _avaliacaoAppService.AlterarOpcaoAvaliacaoAsync(opcaoAvaliacao.Id, opcaoAvaliacao.Descricao, opcaoAvaliacao.Verdadeira);

                if (result.Success)
                {
                    return(RedirectToAction(nameof(Index), new { questaoId = opcaoAvaliacao.QuestaoId }));
                }
                else
                {
                    throw result.Exception;
                }
            }

            return(View(opcaoAvaliacao));
        }
예제 #6
0
        public async Task <int> AdicionarOpcaoAvaliacaoAsync(int questaoId, string descricao, bool verdadeira)
        {
            ValidarOpcaoAvaliacao(questaoId, verdadeira);

            var opcaoAvaliacao = new OpcaoAvaliacao()
            {
                QuestaoId = questaoId, Descricao = descricao, Verdadeira = verdadeira
            };

            var erros = opcaoAvaliacao.Validate();

            if (erros.Length == 0)
            {
                await _opcaoAvaliacaoRepository.AdicionarAsync(opcaoAvaliacao);

                _opcaoAvaliacaoRepository.SaveChanges();

                return(opcaoAvaliacao.Id);
            }
            else
            {
                throw new DomainException(erros);
            }
        }