public RankingSimuladoAluno GetResultadoRankingAluno(int matricula, int idSimulado, int idAplicacao, string especialidade, string unidades, string localidade = "") { try { using (MiniProfiler.Current.Step("Obtendo resultado ranking aluno")) { var simuladoConsolidado = _rankingSimuladoRepository.GetSimuladoConsolidado(matricula, idSimulado); var result = new RankingSimuladoAluno(); if (simuladoConsolidado == null) { result.EstatisticasAlunoRankingOnline = _rankingSimuladoRepository.GetEstatisticaAlunoSimulado(matricula, idSimulado, true); _rankingSimuladoRepository.InsertSimuladoConsolidado(matricula, idSimulado, result.EstatisticasAlunoRankingOnline); } else { result.EstatisticasAlunoRankingOnline = _rankingSimuladoRepository.GetEstatisticaAlunoSimulado(matricula, idSimulado, true); } result.EstatisticasAlunoRankingEstudo = _rankingSimuladoRepository.GetEstatisticaAlunoSimulado(matricula, idSimulado, false); var local = string.IsNullOrEmpty(localidade) ? string.Empty : (localidade.IndexOf('(') > 0 ? localidade.Substring(0, localidade.IndexOf('(')).Trim() : localidade); var rank = new RankingSimuladoAluno(); try { if (RedisCacheManager.CannotCache(RedisCacheConstants.Simulado.KeyRankingSimulado)) { rank = _rankingSimuladoRepository.GetRankingObjetiva(matricula, idSimulado, especialidade, unidades, local); } else { rank = _rankingSimuladoRepository.GetRankingObjetivaCache(matricula, idSimulado, especialidade, unidades, local); } } catch (Exception) { rank = _rankingSimuladoRepository.GetRankingObjetiva(matricula, idSimulado, especialidade, unidades, local); } if (rank != null) { result.Nota = rank.Nota; result.Posicao = rank.Posicao; result.DataRealizacao = rank.Simulado.DtHoraInicio; result.QuantidadeParticipantes = (int)Math.Ceiling(Convert.ToDecimal(getQuantidadeParticipantesRanking(rank.QuantidadeParticipantes)) / 2); } return(result); } } catch (Exception e) { throw e; } }
private RankingSimuladoAluno ObterPosicaoAlunoNoRankingModoProva(RankingSimuladoAluno rankingAluno, int idSimulado, int idHistorico, string especialidade, string unidades, string localidade) { var addAlunoAoRanking = 1; var ranking = _exercicioRepository.ObterRankingPorSimulado(idSimulado, especialidade, unidades, localidade); var qtdQuestoes = _exercicioRepository.ObterQuantidadeQuestoesSimuladoOnline(idSimulado); var posicaoRankingAluno = ranking.Where(x => x.Acertos > rankingAluno.EstatisticasAlunoRankingModoProva.Acertos).Count() + addAlunoAoRanking; if (ranking.Count == 0) { rankingAluno.Posicao = "1º"; } else { rankingAluno.Posicao = posicaoRankingAluno.ToString() + "º"; } rankingAluno.Nota = ((10d / (double)qtdQuestoes) * rankingAluno.EstatisticasAlunoRankingModoProva.Acertos).ToString("0.#"); rankingAluno.DataRealizacao = _exercicioRepository.ObterExercicio(idHistorico).dteDateInicio; rankingAluno.QuantidadeParticipantes = ranking.Count > 0 ? (ranking.Count + addAlunoAoRanking) : 1; return(rankingAluno); }
public RankingSimuladoAluno GetResultadoRankingModoProva(int matricula, int idSimulado, int idHistorico, int idAplicacao, string especialidade = "", string unidades = "", string localidade = "") { try { using (MiniProfiler.Current.Step("Obtendo resultado ranking modo prova")) { var result = new RankingSimuladoAluno(); result.EstatisticasAlunoRankingModoProva = _rankingSimuladoRepository.GetEstatisticaAlunoSimuladoModoProva(matricula, idSimulado, idHistorico); result.EstatisticasAlunoRankingEstudo = _rankingSimuladoRepository.GetEstatisticaAlunoSimulado(matricula, idSimulado, false); var local = string.IsNullOrEmpty(localidade) ? string.Empty : (localidade.IndexOf('(') > 0 ? localidade.Substring(0, localidade.IndexOf('(')).Trim() : localidade); this.ObterPosicaoAlunoNoRankingModoProva(result, idSimulado, idHistorico, especialidade, unidades, localidade); return(result); } } catch (Exception e) { throw e; } }