public IList <QuestaoParaAvaliarDTO> ListarQuestoesParaAvaliar(FiltrarQuestoesRequest filtro) { var queryRespostas = _respostaRepository.Queryable().Where(r => r.IdQuestao == filtro.IdQuestao); if (filtro.RemoverQuestoesJaAvaliadas) { queryRespostas = queryRespostas.Where(r => r.PontosGanhos == null); } var questoes = (from r in queryRespostas join e in _entregaDeLicaoRepository.Queryable() on r.IdEntregaDeLicao equals e.Id where e.Status == EntregaDeLicaoStatusEnum.Entregue orderby e.DataHoraEntrega ascending select new QuestaoParaAvaliarDTO { IdEntregaDeLicao = e.Id, IdResposta = r.Id, Resposta = r.Conteudo, IdQuestao = r.IdQuestao, DataHoraEntrega = e.DataHoraEntrega, IdGrupo = e.IdGrupo, PontosRecebidos = r.PontosGanhos }).ToList(); return(questoes); }
private void AplicarTrofeusRecebidos(LicaoDTO response) { var entregaDeTrofeus = (from et in _entregaDeTrofeuRepository.Queryable() join t in _trofeuRepository.Queryable() on et.IdTrofeu equals t.Id join r in _respostaRepository.Queryable() on et.IdResposta equals r.Id select new KeyValuePair <int, EntregaDeTrofeuDTO>(r.IdQuestao, new EntregaDeTrofeuDTO { IdEntrega = et.Id, IdTrofeu = t.Id, NomeTrofeu = t.Nome, PontosMovimentados = t.Pontos })).ToList(); foreach (var questao in response.Questoes) { questao.Trofeus = entregaDeTrofeus.Where(t => t.Key == questao.Id).Select(t => t.Value).ToList(); } }
private void AplicarPontosGanhosComRespostas(List <AlunoDoCaseDTO> alunos, IQueryable <AlunoDoCase> queryAlunos) { var pontosDasRespostas = (from a in queryAlunos join rl in _responsavelPelaLicaoRepository.Queryable() on a.Id equals rl.IdAluno join re in _respostaRepository.Queryable() on rl.IdEntregaDeLicao equals re.IdEntregaDeLicao where re.PontosGanhos != null group re by a.IdUsuario into g select new { IdUsuario = g.Key, Pontos = g.Sum(p => p.PontosGanhos.Value) }).ToList(); foreach (var aluno in alunos) { var totalDasRespostas = pontosDasRespostas.FirstOrDefault(p => p.IdUsuario == aluno.IdUsuario); if (totalDasRespostas != null) { aluno.Pontos += totalDasRespostas.Pontos; } } }
private void AplicarPontosGanhosComRespostas(List <GrupoDTO> grupos, IQueryable <Grupo> queryGrupos) { var pontosDasRespostas = (from g in queryGrupos join e in _entregaDeLicaoRepository.Queryable() on g.Id equals e.IdGrupo join re in _respostaRepository.Queryable() on e.Id equals re.IdEntregaDeLicao where re.PontosGanhos != null group re by g.Id into g select new { IdGrupo = g.Key, Pontos = g.Sum(p => p.PontosGanhos.Value) }).ToList(); foreach (var grupo in grupos) { var totalDasRespostas = pontosDasRespostas.FirstOrDefault(p => p.IdGrupo == grupo.Id); if (totalDasRespostas != null) { grupo.Pontos += totalDasRespostas.Pontos; } } }