Beispiel #1
0
        public async Task <int> AdicionarAvaliacaoQuestaoAsync(string enunciado, int tipo, int id_avaliacao, List <AvaliacaoOpcao> opcoes)
        {
            var avaliacaoQuestao = new AvaliacaoQuestao()
            {
                Enunciado    = enunciado,
                Tipo         = tipo,
                IdAvaliacao  = id_avaliacao,
                CriadoEm     = DateTime.Now,
                AtualizadoEm = DateTime.Now,
                Opcoes       = opcoes
            };

            if (avaliacaoQuestao.Opcoes == null || avaliacaoQuestao.Opcoes.Count < 4)
            {
                throw new Exception("Uma questão deve conter ao menos 4 opções!");
            }
            else
            {
                if (avaliacaoQuestao.Tipo == 1)
                {
                    bool hasTrue = false;
                    foreach (AvaliacaoOpcao op in avaliacaoQuestao.Opcoes)
                    {
                        if (op.Resposta && !hasTrue)
                        {
                            hasTrue = true;
                        }
                        else if (op.Resposta && hasTrue)
                        {
                            throw new Exception("Questões múltipla escolha devem ter apenas uma opção verdadeira!");
                        }
                    }
                    if (!hasTrue)
                    {
                        throw new Exception("Questões múltipla escolha devem ter ao menos uma opção verdadeira!");
                    }
                }
                _avaliacaoQuestaoRepository.Adicionar(avaliacaoQuestao);
                await _avaliacaoQuestaoRepository.SaveChangesAsync();

                return(avaliacaoQuestao.Id);
            }
        }
Beispiel #2
0
        public async Task <IActionResult> Create([Bind("Tipo,Enunciado,IdAvaliacao,Opcoes")] AvaliacaoQuestao questao)
        {
            Avaliacao avaliacao = await _avaliacaoRepo.ObterAsync(questao.IdAvaliacao);

            ViewData["Avaliacao"] = avaliacao;
            try
            {
                if (ModelState.IsValid)
                {
                    int id_opcao = await _avaliacaoQuestaoService.AdicionarAvaliacaoQuestaoAsync(questao.Enunciado, questao.Tipo, questao.IdAvaliacao, questao.Opcoes);

                    return(RedirectToAction("Edit", "Avaliacao", new { id = questao.IdAvaliacao }));
                }
                return(View(questao));
            }
            catch (Exception e)
            {
                ViewData["ErrorMessage"] = e.Message;
                return(View(questao));
            }
        }