Esempio n. 1
0
        public CartaoRespostaSimuladoAgendadoDTO GetCartaoRespostaSimuladoAgendado(int ClientID, int ExercicioID, int ExercicioHistoricoID)
        {
            CartaoRespostaSimuladoAgendadoDTO cartaoresposta = new CartaoRespostaSimuladoAgendadoDTO();
            List <RespostasObjetivasCartaoRespostaSimuladoDTO>   respostasObjetivas   = new List <RespostasObjetivasCartaoRespostaSimuladoDTO>();
            List <RespostasDiscursivasCartaoRespostaSimuladoDTO> respostasDiscursivas = new List <RespostasDiscursivasCartaoRespostaSimuladoDTO>();

            using (MiniProfiler.Current.Step("Obtendo cartão resposta simulado agendado"))
            {
                var possuiOrdem = _repository.ObterOrdemSimulado(ExercicioID).Count > 0;

                var questoes = possuiOrdem
                    ? _repository.ObterQuestoesSimuladoComOrdem(ExercicioID)
                    : _repository.ObterQuestoesSimuladoSemOrdem(ExercicioID);

                var questoesIds = questoes.Select(x => x.Id).ToArray();

                if (ExercicioHistoricoID > 0)
                {
                    respostasObjetivas   = _repository.GetRespostasObjetivasSimuladoAgendado(ExercicioHistoricoID, questoesIds);
                    respostasDiscursivas = _repository.GetRespostasDiscursivasSimuladoAgendado(ExercicioHistoricoID, questoesIds);
                }


                foreach (Questao res in questoes)
                {
                    var resObjetiva = (from r in respostasObjetivas
                                       where r.cartaoRespostaObjetiva.intQuestaoID == res.Id
                                       select new
                    {
                        r.questaoAlternativa.bitCorreta,
                        r.cartaoRespostaObjetiva.intExercicioTipoId,
                        r.cartaoRespostaObjetiva.txtLetraAlternativa
                    }).ToList();

                    var resDiscursiva = (from r in respostasDiscursivas
                                         where r.cartaoRespostaDiscursiva.intQuestaoDiscursivaID == res.Id
                                         select new
                    {
                        r.questaoAlternativa.bitCorreta,
                        r.cartaoRespostaDiscursiva.intExercicioTipoId,
                        r.cartaoRespostaDiscursiva.txtResposta
                    }).ToList();

                    if (resObjetiva.Count() > 0)
                    {
                        var resposta = resObjetiva.First();
                        res.Respondida    = true;
                        res.Correta       = resposta.bitCorreta ?? false;
                        res.RespostaAluno = resposta.txtLetraAlternativa;
                    }
                    if (resDiscursiva.Count() > 0)
                    {
                        var resposta = resDiscursiva.First();
                        if (!string.IsNullOrWhiteSpace(resposta.txtResposta))
                        {
                            res.Respondida = true;
                        }
                    }

                    res.ExercicioTipoID = (int)Exercicio.tipoExercicio.SIMULADO;
                }

                foreach (var cart in questoes)
                {
                    cartaoresposta.Questoes.Add(new QuestaoSimuladoAgendadoDTO()
                    {
                        Id              = cart.Id,
                        Enunciado       = cart.Enunciado,
                        ExercicioTipoID = cart.ExercicioTipoID,
                        MediaComentario = cart.MediaComentario,
                        Respondida      = cart.Respondida,
                        RespostaAluno   = cart.RespostaAluno,
                        Tipo            = cart.Tipo
                    });
                }


                cartaoresposta.HistoricoId = ExercicioHistoricoID;
                cartaoresposta.ClientID    = ClientID;

                return(cartaoresposta);
            }
        }