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;
            }
        }
Esempio n. 2
0
        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;
            }
        }