public FiltrosAluno GetProvasAluno(int matricula, int idAplicacao)
        {
            // ======================== LOG
            new Util.Log().SetLog(new LogMsPro
            {
                Matricula = matricula,
                IdApp     = (Aplicacoes)idAplicacao,
                Tela      = Util.Log.MsProLog_Tela.MinhasProvas,
                Acao      = Util.Log.MsProLog_Acao.Abriu
            });
            // ========================

            List <FiltroAluno> listaFiltros;

            using (var ctx = new DesenvContext())
            {
                listaFiltros = ctx.tblFiltroAluno_MontaProva.Where(x => x.intClientId == matricula && (bool)x.bitAtivo).Select(x => new FiltroAluno()
                {
                    Anos             = x.txtAnos,
                    Concursos        = x.txtConcursos,
                    Criacao          = x.dteDataCriacao,
                    FiltrosEspeciais = x.txtFiltrosEspeciais,
                    Especialidades   = x.txtEspecialidades,
                    Matricula        = x.intClientId,
                    PalavraChave     = x.txtPalavraChave,
                    Id   = x.intID,
                    Nome = x.txtNome
                }).OrderByDescending(x => x.Id).ToList();
            }

            var provasContadorQuestoes = _montaProvasRepository.ObterContadorDeQuestoes(matricula);
            var filtrosAluno           = new FiltrosAluno();

            filtrosAluno.AddRange(listaFiltros);

            filtrosAluno.ForEach(x =>
            {
                x.ProvasAluno = GetProvasFiltroContador(provasContadorQuestoes, matricula, x.Id);
                x.QuantidadeQuestoesNaoAssociadas = _montaProvasRepository.GetQuantidadeQuestoesNaoAssociadas(x.Id);
                x.QuantidadeQuestoesAssociadas    = _montaProvasRepository.GetQuantidadeQuestoesFiltro(x.Id);
            });

            return(filtrosAluno);
        }
        public FiltrosAluno GetProvasAlunoNovo(int matricula, int idAplicacao, int page, int limit)
        {
            using (MiniProfiler.Current.Step("Obtendo provas aluno novo"))
            {
                // ======================== LOG
                new Util.Log().SetLog(new LogMsPro
                {
                    Matricula = matricula,
                    IdApp     = (Aplicacoes)idAplicacao,
                    Tela      = Util.Log.MsProLog_Tela.MinhasProvas,
                    Acao      = Util.Log.MsProLog_Acao.Abriu
                });
                // ========================

                List <FiltroAluno> listaFiltros = _montaProvasRepository.GetFiltrosAluno(matricula, page, limit);
                var provasContadorQuestoes      = _montaProvasRepository.ObterContadorDeQuestoes(matricula);
                var filtrosAluno = new FiltrosAluno();
                filtrosAluno.AddRange(listaFiltros);

                filtrosAluno.ForEach(x =>
                {
                    int qtdQuestoesNaoAssociadas = _montaProvasRepository.GetQuantidadeQuestoesNaoAssociadas(x.Id);
                    int qtdQuestoesFiltro        = _montaProvasRepository.GetQuantidadeQuestoesFiltro(x.Id);


                    int qtdQuestoes                   = x.QuantidadeQuestoesOrNull.HasValue ? x.QuantidadeQuestoesOrNull.Value : qtdQuestoesFiltro;
                    x.QuantidadeQuestoes              = qtdQuestoes;
                    x.ProvasAluno                     = GetProvasFiltroContador(provasContadorQuestoes, matricula, x.Id);
                    x.QuantidadeQuestoesAssociadas    = qtdQuestoes;
                    qtdQuestoesNaoAssociadas          = x.QuantidadeQuestoesOrNull.HasValue ? qtdQuestoes - qtdQuestoesFiltro : qtdQuestoesNaoAssociadas;
                    x.QuantidadeQuestoesNaoAssociadas = qtdQuestoesNaoAssociadas;
                });

                return(filtrosAluno);
            }
        }