예제 #1
0
        public MontarGrupoDTO ObterDadosParaMontagemDeGrupos(Usuario usuarioLogado, int?idCase = null, int?idGrupo = null)
        {
            if (!idCase.HasValue && !idGrupo.HasValue)
            {
                throw new Exception("Solicitação invélida.");
            }

            var response = new MontarGrupoDTO();

            CaseDeNegocio caseDeNegocio = null;

            if (idGrupo.HasValue)
            {
                Grupo grupo = ObterPorId(idGrupo.Value);

                if (grupo == null)
                {
                    throw new Exception("Grupo inexistente.");
                }

                caseDeNegocio = grupo.CaseDeNegocio;

                response.IdGrupo               = idGrupo.Value;
                response.NomeGrupo             = grupo.Nome;
                response.GritoDeGuerra         = grupo.GritoDeGuerra;
                response.PermiteAlterarMembros = GrupoJaTeveLicaoEntregue(idGrupo.Value);
                response.Membros               = ListarMembros(idGrupo.Value);
            }
            else
            {
                caseDeNegocio = _caseDeNegocioRepository.GetById(idCase.Value);

                if (caseDeNegocio == null)
                {
                    throw new Exception("Case de negócio não encontrado.");
                }

                var alunoDoCase = _alunoRepository.Obter(usuarioLogado.Id, caseDeNegocio.Id);
                if (alunoDoCase != null)
                {
                    response.Membros.Add(new MembroDoGrupoDTO(usuarioLogado, alunoDoCase));
                }

                response.PermiteAlterarMembros = true;
            }

            if (!caseDeNegocio.PermiteMontarGrupos)
            {
                throw new Exception("Case de negócio não permite grupos.");
            }

            response.IdCase = caseDeNegocio.Id;
            response.MinimoPermitidoDeAlunos = caseDeNegocio.MinimoDeAlunosPorGrupo;
            response.MaximoPermitidoDeAlunos = caseDeNegocio.MaximoDeAlunosPorGrupo;

            return(response);
        }
 public AlunoDoCase ObterAlunoInscritoNoCase(int idUsuario, int IdCaseDeNegocio)
 {
     return(_alunoDoCaseRepository.Obter(idUsuario, IdCaseDeNegocio));
 }