public IList <EntregaDeTrofeuDTO> Listar(FiltroTrofeusRequest filtro) { if (!filtro.IdEntregaDeLicao.HasValue && !filtro.IdGrupo.HasValue && !filtro.IdUsuario.HasValue) { throw new Exception("Solicitação inválida."); } IQueryable <EntregaDeTrofeu> queryTrofeusEntregues = _repository.Queryable(); if (filtro.IdEntregaDeLicao.HasValue) { queryTrofeusEntregues = from et in queryTrofeusEntregues join el in _entregaDeLicaoRepository.Queryable() on et.IdEntregaDeLicao equals el.Id where el.Id == filtro.IdEntregaDeLicao.Value select et; } else if (filtro.IdGrupo.HasValue) { queryTrofeusEntregues = from et in queryTrofeusEntregues join el in _entregaDeLicaoRepository.Queryable() on et.IdEntregaDeLicao equals el.Id where el.IdGrupo == filtro.IdGrupo.Value select et; } else if (filtro.IdUsuario.HasValue) { queryTrofeusEntregues = from et in queryTrofeusEntregues join r in _responsavelPelaLicaoRepository.Queryable() on et.IdEntregaDeLicao equals r.IdEntregaDeLicao join a in _alunoDoCaseRepository.Queryable() on r.IdAluno equals a.Id where a.IdUsuario == filtro.IdUsuario.Value select et; } var trofeus = (from et in queryTrofeusEntregues join t in _trofeuRepository.Queryable() on et.IdTrofeu equals t.Id select new EntregaDeTrofeuDTO { IdEntrega = et.Id, IdTrofeu = et.IdTrofeu, NomeTrofeu = t.Nome, PontosMovimentados = t.Pontos }).ToList(); return(trofeus); }
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 AplicarPontosGanhosComTrofeus(List <AlunoDoCaseDTO> alunos, IQueryable <AlunoDoCase> queryAlunos) { var pontosDosTrofeus = (from a in queryAlunos join rl in _responsavelPelaLicaoRepository.Queryable() on a.Id equals rl.IdAluno join et in _entregaDeTrofeuRepository.Queryable() on rl.IdEntregaDeLicao equals et.IdEntregaDeLicao join t in _trofeuRepository.Queryable() on et.IdTrofeu equals t.Id group t by a.IdUsuario into g select new { IdUsuario = g.Key, Pontos = g.Sum(trofeu => trofeu.Pontos) }).ToList(); foreach (var aluno in alunos) { var totalDosTrofeus = pontosDosTrofeus.FirstOrDefault(p => p.IdUsuario == aluno.IdUsuario); if (totalDosTrofeus != null) { aluno.Pontos += totalDosTrofeus.Pontos; } } }
private void AplicarPontosGanhosComTrofeus(List <GrupoDTO> grupos, IQueryable <Grupo> queryGrupos) { var pontosDosTrofeus = (from g in queryGrupos join el in _entregaDeLicaoRepository.Queryable() on g.Id equals el.IdGrupo join et in _entregaDeTrofeuRepository.Queryable() on el.Id equals et.IdEntregaDeLicao join t in _trofeuRepository.Queryable() on et.IdTrofeu equals t.Id group t by g.Id into g select new { IdGrupo = g.Key, Pontos = g.Sum(trofeu => trofeu.Pontos) }).ToList(); foreach (var grupo in grupos) { var totalDosTrofeus = pontosDosTrofeus.FirstOrDefault(p => p.IdGrupo == grupo.Id); if (totalDosTrofeus != null) { grupo.Pontos += totalDosTrofeus.Pontos; } } }