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); }
//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)); }
public static CartoesResposta GetCartaoRespostaImpressasEMarcacaoes() { var cartaoReposta = new CartoesResposta(); cartaoReposta.Questoes = GetMockQuestoes(); return(cartaoReposta); }
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); }
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); }
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); }
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; } }