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); } }
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)); }
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); }