public IList <EntregaDeLicaoIniciadaDTO> ListarEntregasIniciadasPeloUsuarioNoCaseDeNegocio(int idCaseDeNegocio, int idUsuario) { return((from r in _responsavelRepository.Queryable() join a in _alunoRepository.Queryable() on r.IdAluno equals a.Id join e in _entregaDeLicaoRepository.Queryable() on r.IdEntregaDeLicao equals e.Id where a.IdUsuario == idUsuario && e.Licao.IdCase == idCaseDeNegocio select new EntregaDeLicaoIniciadaDTO { IdEntregaDeLicao = e.Id, IdLicao = e.Licao.Id, Status = e.Status, DataHoraEntrega = e.DataHoraEntrega }).ToList()); }
public IList <AlunoDoCase> ListarAlunosQueSejamMembrosNoGrupo(int idGrupo) { return((from a in _alunoDoCaseRepository.Queryable() join m in _membroDoGrupoRepository.Queryable() on a.Id equals m.IdAluno where m.IdGrupo == idGrupo select a).ToList()); }
private void AdicionarCasesDeNegociosAssociadosComoAluno(List <CaseDTO> lista, int idUsuario) { lista.AddRange( (from c in _caseDeNegocioRepository.Queryable() join a in _alunoDoCaseRepository.Queryable() on c.Id equals a.IdCaseDeNegocio where a.IdUsuario == idUsuario select new CaseDTO { Id = c.Id, Nome = c.Nome }).ToList() ); }
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); }
public int Adicionar(ManterGrupoRequest request) { if (request == null || request.IdGrupo.HasValue) { throw new Exception("Solicitação inválida."); } if (request.IdsAlunosMembros == null || request.IdsAlunosMembros.Count < 2) { throw new Exception("Um grupo deve ser formado por 2 ou mais alunos."); } CaseDeNegocio caseDeNegocio = _caseDeNegocioRepository.GetById(request.IdCase); if (caseDeNegocio == null) { throw new Exception("Case de negócio não encontrado."); } if (!caseDeNegocio.PermiteMontarGrupos) { throw new Exception("Case de negócio não permite criação de grupos."); } if (request.IdsAlunosMembros.Count < caseDeNegocio.MinimoDeAlunosPorGrupo || request.IdsAlunosMembros.Count > caseDeNegocio.MaximoDeAlunosPorGrupo) { throw new Exception(string.Format("Este case de negócio requer que o grupo seja formado com {0} a {1} alunos.", caseDeNegocio.MinimoDeAlunosPorGrupo, caseDeNegocio.MaximoDeAlunosPorGrupo)); } var alunos = (from a in _alunoRepository.Queryable() where a.IdCaseDeNegocio == caseDeNegocio.Id && request.IdsAlunosMembros.Contains(a.Id) select a).ToList(); if (!request.IdsAlunosMembros.All(id => alunos.Any(a => a.Id == id))) { throw new Exception("Foi solicitado inclusão de aluno inexistente."); } bool possuiAlunoQueJaEstaEmAlgumGrupo = (from m in _membroDoGrupoRepository.Queryable() join a in _alunoRepository.Queryable() on m.IdAluno equals a.Id where request.IdsAlunosMembros.Contains(m.IdAluno) && a.IdCaseDeNegocio == caseDeNegocio.Id select m).Any(); if (possuiAlunoQueJaEstaEmAlgumGrupo) { throw new Exception("Foi solicitado inclusão de aluno que já possui grupo."); } Grupo grupo = new Grupo(caseDeNegocio, request.Nome, request.GritoDeGuerra); foreach (var aluno in alunos) { grupo.Membros.Add(new MembroDoGrupo(grupo, aluno)); } Adicionar(grupo); return(grupo.Id); }