コード例 #1
0
        public async Task <ProvaQueryResult> ObterProvaAsync(int publicacaoId, string login)
        {
            var aluno = _alunoRepository.ObterPorLogin(login);

            if (aluno == null)
            {
                throw new Exception("O aluno não foi localizado!");
            }

            var publicacao = await _publicacaoRepository.ObterComRelacoesAsync(publicacaoId);

            if (publicacao == null)
            {
                throw new Exception("A publicacao não foi localizada!");
            }

            var avaliacaoCompleta = await _avaliacaoRepository.ObterComRelacoesAsync(publicacao.IdAvaliacao);

            var provaCompleta = await _provaRepository.ObterProvaDoAlunoAsync(publicacao.IdAvaliacao, aluno.Id);

            var retorno = new ProvaQueryResult()
            {
                AvaliacaoId  = publicacao.IdAvaliacao,
                PublicacaoId = publicacao.Id,
                Avaliacao    = publicacao.Avaliacao,
                Publicacao   = publicacao,
                Questoes     = avaliacaoCompleta.Questoes.Select(x => new QuestaoProvaQueryResult()
                {
                    QuestaoId = x.Id,
                    Enunciado = x.Enunciado,
                    Tipo      = x.Tipo,
                    Completa  = false,
                    Opcoes    = x.Opcoes.Select(y => new OpcaoProvaQueryResult()
                    {
                        OpcaoAvaliacaoId = y.Id,
                        QuestaoId        = y.IdAvaliacaoQuestao,
                        Descricao        = y.Descricao,
                        Resposta         = false
                    }).ToList()
                }).ToList()
            };

            retorno.Questoes.SelectMany(x => x.Opcoes).ToList().ForEach(x => {
                x.Resposta = provaCompleta?.Questoes?
                             .SelectMany(y => y.Opcoes)
                             .FirstOrDefault(y => y.IdAvaliacaoOpcao == x.OpcaoAvaliacaoId)?.Resposta ?? false;
            });

            return(retorno);
        }
コード例 #2
0
        // GET: Publicacao/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var publicacao = await _publicacaoRepository.ObterComRelacoesAsync(id.Value);

            if (publicacao == null)
            {
                return(NotFound());
            }

            return(View(publicacao));
        }