Пример #1
0
        public CartoesResposta GetCartoesRespostaFiltrado(CartaoRespostaFiltro filtro)
        {
            using (MiniProfiler.Current.Step("Obter cartões respostas filtrados"))
            {
                var cartaoResposta = GetCartaoRespostaDetalhado(filtro.ExercicioId, filtro.ClientId, filtro.TipoExercicioID, filtro.AnoProduto, filtro.ApostilaId);

                var cartaoRespostaFiltrado = FiltrarQuestoes(filtro, cartaoResposta);

                return(cartaoResposta);
            }
        }
Пример #2
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);
        }
 public CartoesResposta FiltrarCartaoResposta(CartaoRespostaFiltro filtro)
 {
     return(new CartaoRespostaBusiness(new CartaoRespostaEntity(), new QuestaoEntity(), new AulaEntity()).GetCartoesRespostaFiltrado(filtro));
 }
Пример #4
0
        private CartaoRespostaFiltro CriarNovoFiltro(List <QuestaoFiltroDTO> questoes, int ExercicioId, int ClientId, int TipoExercicioID, int ano, int ApostilaId)
        {
            CartaoRespostaFiltro filtro = new CartaoRespostaFiltro {
                ExercicioId = ExercicioId, ClientId = ClientId, TipoExercicioID = TipoExercicioID, AnoProduto = ano, ApostilaId = ApostilaId
            };

            filtro.Ano = questoes.GroupBy(a => a.Ano).ToList()
                         .Select(x => new CartaoRespostaFiltroItem <int>
            {
                Item       = x.Key,
                Quantidade = x.ToList().Count(),
                Questoes   = x.Select(y => y.QuestaoId).ToList()
            }).OrderByDescending(o => o.Item).ToList();

            filtro.Estado = questoes.GroupBy(a => a.Estado).ToList()
                            .Select(x => new CartaoRespostaFiltroItem <string>
            {
                Item       = x.Key,
                Quantidade = x.ToList().Count(),
                Questoes   = x.Select(y => y.QuestaoId).ToList()
            }).OrderBy(o => o.Item).ToList();

            filtro.Concurso = questoes.GroupBy(a => a.ConcursoSigla).ToList()
                              .Select(x => new CartaoRespostaFiltroItem <string>
            {
                Item       = x.Key,
                Quantidade = x.ToList().Count(),
                Questoes   = x.Select(y => y.QuestaoId).ToList()
            }).OrderBy(o => o.Item).ToList();

            var impressas = questoes.Where(a => a.Impressa).Select(x => x.QuestaoId).ToList();

            filtro.Impressas = new CartaoRespostaFiltroItem <string>
            {
                Quantidade = impressas.Count(),
                Questoes   = impressas
            };

            var favoritas = questoes.Where(a => a.Favorita).Select(x => x.QuestaoId).Distinct().ToList();

            filtro.Favoritas = new CartaoRespostaFiltroItem <string>
            {
                Quantidade = favoritas.Count(),
                Questoes   = favoritas
            };

            var anotacoes = questoes.Where(a => a.Anotada).Select(x => x.QuestaoId).Distinct().ToList();

            filtro.Anotacoes = new CartaoRespostaFiltroItem <string>
            {
                Quantidade = anotacoes.Count(),
                Questoes   = anotacoes
            };

            var incorretas = questoes.Where(a => a.Incorreta).Select(x => x.QuestaoId).Distinct().ToList();

            filtro.Incorretas = new CartaoRespostaFiltroItem <string>
            {
                Quantidade = incorretas.Count(),
                Questoes   = incorretas
            };

            var naoRespondidas = questoes.Where(a => a.NaoRespondida).Select(x => x.QuestaoId).Distinct().ToList();

            filtro.NaoRespondidas = new CartaoRespostaFiltroItem <string>
            {
                Quantidade = naoRespondidas.Count(),
                Questoes   = naoRespondidas
            };

            filtro.Questoes        = questoes.Select(x => x.QuestaoId).ToList();
            filtro.QuantidadeTotal = questoes.Count();

            return(filtro);
        }