Пример #1
0
 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()
         );
 }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }