Ejemplo n.º 1
0
        public LicaoDTO ObterEntrega(int IdEntregaDeLicao, Usuario usuarioLogado)
        {
            var entrega = _entregaDeLicaoRepository.GetById(IdEntregaDeLicao);

            if (entrega == null)
            {
                throw new Exception("Registro de entrega não localizado.");
            }

            var responsaveis = _consultaEntregaDeLicaoService.ListarResponsaveisPelaEntregaDeLicao(entrega.Id);

            if (!_consultaEntregaDeLicaoService.PermiteVisualizarLicao(usuarioLogado, responsaveis))
            {
                throw new Exception("Usuário não possui permissão para visualizar esta lição.");
            }

            var response = new LicaoDTO(entrega);

            response.Responsaveis = responsaveis;

            bool permiteEditar   = _caseDeNegocioService.PermiteUsuarioEditarCaseDeNegocio(usuarioLogado, entrega.Licao.CaseDeNegocio);
            bool ehAlunoInscrito = _caseDeNegocioService.UsuarioEstaInscritoNoCaseDeNegocio(usuarioLogado, entrega.Licao.CaseDeNegocio);

            var licoesIniciadas = _consultaEntregaDeLicaoService.ListarEntregasIniciadasPeloUsuarioNoCaseDeNegocio(entrega.Licao.IdCase, usuarioLogado.Id);

            PreencherDadosDePermissaoEEntrega(response, permiteEditar, ehAlunoInscrito, licoesIniciadas);

            if (entrega.Status == EntregaDeLicaoStatusEnum.Entregue)
            {
                AplicarTrofeusRecebidos(response);
            }

            return(response);
        }
Ejemplo n.º 2
0
        public void Atribuir(AtribuirTrofeuRequest request, Usuario usuario)
        {
            Trofeu trofeu = _trofeuRepository.GetById(request.IdTrofeu);

            if (trofeu == null)
            {
                throw new Exception("Troféu não localizado.");
            }

            CaseDeNegocio caseDeNegocio = _caseDeNegocioService.ObterPorId(trofeu.IdCase);

            if (!_caseDeNegocioService.UsuarioEstaAssociadoAoCaseDeNegocioComoProfessor(usuario, caseDeNegocio))
            {
                throw new Exception("Usuário não possui permissão para esta solicitação.");
            }

            EntregaDeLicao entregaDeLicao = _entregaDeLicaoRepository.GetById(request.IdEntregaDeLicao);

            if (entregaDeLicao == null)
            {
                throw new Exception("Lição não localizada.");
            }
            else if (entregaDeLicao.Licao.IdCase != caseDeNegocio.Id)
            {
                throw new Exception("Lição não pode ser associada à este troféu.");
            }

            Resposta resposta = null;

            if (request.IdResposta != null && request.IdResposta > 0)
            {
                resposta = _respostaRepository.GetById(request.IdResposta.Value);
                if (resposta == null)
                {
                    throw new Exception("Questão não localizada.");
                }
                else if (resposta.IdEntregaDeLicao != entregaDeLicao.Id)
                {
                    throw new Exception("Resposta não associada à lição.");
                }
            }

            EntregaDeTrofeu entregaDeTrofeu = new EntregaDeTrofeu(trofeu, entregaDeLicao, resposta);

            Adicionar(entregaDeTrofeu);
        }