Example #1
0
        public CartoesResposta GetCartaoRespostaDetalhado(int ExercicioId, int ClientID, int tipoExericioId, int ano, int apostilaId)
        {
            var cartoesResposta = new CartoesResposta();

            if ((Exercicio.tipoExercicio)tipoExericioId == Exercicio.tipoExercicio.MEDCODE)
            {
                cartoesResposta = _repository.GetCartaoRespostaApostila(ExercicioId, ClientID, apostilaId);
            }
            else
            {
                cartoesResposta = GetCartaoResposta(ExercicioId, ClientID, (Exercicio.tipoExercicio)tipoExericioId, ano);
            }

            cartoesResposta.ClientID = ClientID;

            cartoesResposta = GetMarcacoesQuestoes(cartoesResposta);
            cartoesResposta = GetDetalhesQuestoes(cartoesResposta);

            for (int i = 0; i < cartoesResposta.Questoes.Count(); i++)
            {
                cartoesResposta.Questoes[i].Ordem = i + 1;
            }

            return(cartoesResposta);
        }
Example #2
0
        //Medsoft Pro
        public CartoesResposta GetCartaoResposta(Int32 ExercicioID, Int32 ClientID, Exercicio.tipoExercicio tipo, int ano = 0)
        {
            CartoesResposta retorno = new CartoesResposta();

            using (MiniProfiler.Current.Step("Obtendo cartão resposta"))
            {
                ano = ano == 0 ? (int)_repository.GetYearCache() : ano;

                switch (tipo)
                {
                case Exercicio.tipoExercicio.SIMULADO:
                    retorno = _repository.GetCartaoRespostaSimulado(ExercicioID, ClientID, 0);
                    break;

                case Exercicio.tipoExercicio.CONCURSO:
                    retorno = _repository.GetCartaoRespostaConcurso(ExercicioID, ClientID);
                    break;

                case Exercicio.tipoExercicio.APOSTILA:
                    retorno = GetCartaoRespostaApostilaPorAno(ExercicioID, ClientID, ano);
                    break;

                case Exercicio.tipoExercicio.MONTAPROVA:
                    retorno = _repository.GetCartaoRespostaMontaProva(ExercicioID, ClientID);
                    break;

                default:
                    break;
                }

                return(retorno);
            }
        }
        public int SetApostilaQuestaoAnotacao(CartoesResposta cartaoresposta)
        {
            var questaoID = cartaoresposta.Questoes.First().Id;
            var clientID  = cartaoresposta.ClientID;
            var anotacao  = cartaoresposta.Questoes.First().Anotacoes.First().Anotacao;

            return(new QuestaoEntity().SetAnotacaoAlunoQuestao(questaoID, clientID, anotacao, Convert.ToInt32(Exercicio.tipoExercicio.APOSTILA)));
        }
        public int SetApostilaQuestaoDuvida(CartoesResposta cartaoresposta)
        {
            var questaoID = cartaoresposta.Questoes.First().Id;
            var clientID  = cartaoresposta.ClientID;
            var duvida    = cartaoresposta.Questoes.First().Anotacoes.First().Duvida;

            return(new QuestaoEntity().SetDuvidaQuestaoApostila(questaoID, clientID, duvida));
        }
        public int SetApostilaQuestaoFavorita(CartoesResposta cartaoresposta)
        {
            var questaoID = cartaoresposta.Questoes.First().Id;
            var clientID  = cartaoresposta.ClientID;
            var favorita  = cartaoresposta.Questoes.First().Anotacoes.First().Favorita;

            return(new QuestaoEntity().SetFavoritaQuestaoApostila(questaoID, clientID, favorita));
        }
Example #6
0
        public static CartoesResposta GetCartaoRespostaImpressasEMarcacaoes()
        {
            var cartaoReposta = new CartoesResposta();

            cartaoReposta.Questoes = GetMockQuestoes();


            return(cartaoReposta);
        }
Example #7
0
        public CartoesResposta GetMarcacoesQuestoes(CartoesResposta cartoesReposta)
        {
            var questoesMarcadas = _questaoRepository.GetMarcacoesQuestoesAluno(cartoesReposta.ClientID);

            foreach (var questao in cartoesReposta.Questoes)
            {
                questao.Anotacoes = new List <QuestaoAnotacao>();
                var marcacoes = questoesMarcadas.Where(x => x.QuestaoId == questao.Id).Select(m => new QuestaoAnotacao
                {
                    Favorita = m.Favorita,
                    Anotacao = m.Anotacao
                }).ToList();

                questao.Anotacoes = marcacoes;
            }
            return(cartoesReposta);
        }
Example #8
0
        public CartoesResposta FiltrarQuestoes(CartaoRespostaFiltro filtro, CartoesResposta cartoesResposta)
        {
            var questoesAnos     = filtro.Ano.Where(x => x.Ativo).SelectMany(x => x.Questoes).ToList();
            var questoesEstado   = filtro.Estado.Where(x => x.Ativo).SelectMany(x => x.Questoes).ToList();
            var questoesConcurso = filtro.Concurso.Where(x => x.Ativo).SelectMany(x => x.Questoes).ToList();

            var questoesFiltradas = (from q in cartoesResposta.Questoes
                                     where (!filtro.Anotacoes.Ativo || q.Anotacoes.Any(y => y.Anotacao != null)) &&
                                     (!filtro.Favoritas.Ativo || q.Anotacoes.Any(y => y.Favorita)) &&
                                     (!filtro.Impressas.Ativo || q.Impressa) &&
                                     (!filtro.Incorretas.Ativo || (q.Respondida && !q.Correta)) &&
                                     (!filtro.NaoRespondidas.Ativo || !q.Respondida) &&
                                     (!filtro.Ano.Any(x => x.Ativo) || questoesAnos.Contains(q.Id)) &&
                                     (!filtro.Estado.Any(x => x.Ativo) || questoesEstado.Contains(q.Id)) &&
                                     (!filtro.Concurso.Any(x => x.Ativo) || questoesConcurso.Contains(q.Id))
                                     select q).ToList();

            cartoesResposta.Questoes = questoesFiltradas;

            return(cartoesResposta);
        }
Example #9
0
        public CartoesResposta GetDetalhesQuestoes(CartoesResposta cartoesReposta)
        {
            var questaoId        = cartoesReposta.Questoes.Select(x => x.Id).ToArray();
            var questoesDetalhes = _questaoRepository.GetQuestoesIds(questaoId);

            Parallel.ForEach(cartoesReposta.Questoes, questao =>
            {
                var questaoDetalhe = questoesDetalhes.FirstOrDefault(x => x.QuestaoId == questao.Id);
                questao.Concurso   = new Concurso();

                if (questaoDetalhe != null)
                {
                    questao.Concurso = new Concurso
                    {
                        Ano  = questaoDetalhe.Ano,
                        Nome = questaoDetalhe.ConcursoSigla,
                        UF   = questaoDetalhe.Estado
                    };
                }
            });
            return(cartoesReposta);
        }
Example #10
0
        public CartoesResposta GetCartaoRespostaApostilaPorAno(int exercicioID, int clientID, int ano)
        {
            try
            {
                var anoAtual = _repository.GetYear();
                var cartaoRespostaRetorno = new CartoesResposta();
                int semanaAtual           = Utilidades.GetNumeroSemanaAtual(DateTime.Now);

                var ppQuestoes = _questaoRepository.GetQuestoesComComentarioApostilaCache(exercicioID);

                var listaQuestoes = (from q in ppQuestoes
                                     select new Questao
                {
                    Id = q.Id,
                    Anulada = q.Anulada,
                    Ano = q.Ano,
                    Tipo = q.Tipo,
                    Ordem = q.Ordem,
                    Premium = q.Premium,
                    PossuiComentario = q.PossuiComentario,
                    OrdemPremium = q.OrdemPremium
                });

                var ResultMaterialDireito = _repository.ListaMaterialDireitoAluno(clientID, ano, null);
                var lstMaterialDireito    = ResultMaterialDireito.Where(w => w.intBookEntityID == exercicioID && w.anoCronograma == ano).Distinct().ToList();

                if (lstMaterialDireito.Count() == 0)
                {
                    lstMaterialDireito = ResultMaterialDireito.Where(w => w.intBookEntityID == exercicioID).Distinct().ToList();
                    var Permitido = _aulaEntityData.GetApostilasLiberadasSeHouveAulaCronograma(exercicioID, ano).Any() ? 1 : 0;
                    if (lstMaterialDireito.Count() > 0)
                    {
                        lstMaterialDireito.ForEach(x => x.blnPermitido = Permitido);
                    }
                }

                List <Questao> questoesImpressas;
                if (anoAtual == ano)
                {
                    if (lstMaterialDireito.Any(x => x.blnPermitido == 1))
                    {
                        questoesImpressas = _repository.GetQuestoesSomenteImpressasComOuSemVideoCache(exercicioID, ano);
                    }
                    else
                    {
                        questoesImpressas = new List <Questao>();
                    }
                }
                else
                {
                    questoesImpressas = _repository.GetQuestoesSomenteImpressasComOuSemVideoCache(exercicioID, ano);
                }

                var idsQuestoesImpressas = questoesImpressas.Select(a => a.Id).ToList();
                var idsPPQuestoes        = ppQuestoes.Select(p => p.Id).ToList();

                var questoesVideos     = _repository.GetQuestoesComVideosCache(exercicioID, idsPPQuestoes, idsQuestoesImpressas);
                var questoesAssociadas = listaQuestoes.Where(w => !idsQuestoesImpressas.Contains(w.Id))
                                         .OrderByDescending(q => q.PossuiComentario)
                                         .ThenByDescending(q => q.Premium)
                                         .ThenByDescending(q => q.Ano)
                                         .ThenBy(q => q.OrdemPremium)
                                         .ThenByDescending(q => q.PossuiComentario)
                                         .ThenBy(q => q.Ordem).ToList();

                questoesImpressas = questoesImpressas.OrderBy(q => q.Ordem)
                                    .ThenByDescending(q => q.Ano)
                                    .ToList();

                questoesImpressas.AddRange(questoesAssociadas);

                var questoes = questoesImpressas;

                var listaIdsQuestoes = questoes.Select(q => q.Id).ToList();

                var ultimasMarcacoesObjetiva      = _repository.ListarUltimasMarcacoesObjetiva(clientID, listaIdsQuestoes);
                var marcacoesObjetivasComGabarito = _repository.ListarMarcacoesObjetivasComGabarito(listaIdsQuestoes);

                foreach (var res in questoes)
                {
                    res.Anulada         = res.Anulada;
                    res.ExercicioTipoID = (int)Exercicio.tipoExercicio.APOSTILA;

                    if (res.Tipo == (int)Questao.tipoQuestao.OBJETIVA)
                    {
                        var respostaAluno = ultimasMarcacoesObjetiva.Where(q => q.IntQuestaoID == res.Id).ToList();
                        if (respostaAluno.Any())
                        {
                            res.Respondida = true;
                            var tblConcursoQuestoesAlternativas = marcacoesObjetivasComGabarito
                                                                  .FirstOrDefault(q => q.intQuestaoID == res.Id && (q.bitCorreta ?? false));

                            if (tblConcursoQuestoesAlternativas != null)
                            {
                                res.Correta = tblConcursoQuestoesAlternativas.txtLetraAlternativa == respostaAluno.FirstOrDefault().Resposta;
                            }
                            //Questão não tem Gabarito
                            else
                            {
                                //Verifica se tem pré (gabarito preliminar)
                                tblConcursoQuestoesAlternativas = marcacoesObjetivasComGabarito
                                                                  .FirstOrDefault(q => q.intQuestaoID == res.Id && (q.bitCorretaPreliminar ?? false));

                                if (tblConcursoQuestoesAlternativas != null)
                                {
                                    res.Correta = tblConcursoQuestoesAlternativas.txtLetraAlternativa == respostaAluno.FirstOrDefault().Resposta;
                                }
                            }
                        }
                    }
                    else
                    {
                        res.Respondida = _repository.ExisteRespostasDiscursivas(clientID, exercicioID, res.Id);
                    }

                    cartaoRespostaRetorno.Questoes.Add(res);
                }
                var json = Newtonsoft.Json.JsonConvert.SerializeObject(cartaoRespostaRetorno);
                return(cartaoRespostaRetorno);
            }
            catch
            {
                throw;
            }
        }