public void AtribuirPontosParaResposta(AtribuirNotaRequest request, Usuario usuarioLogado) { Resposta resposta = _respostaRepository.GetById(request.IdResposta); if (resposta == null) { throw new Exception("Resposta não encontrada."); } int idCase = (from r in _respostaRepository.Queryable() join e in _entregaDeLicaoRepository.Queryable() on r.IdEntregaDeLicao equals e.Id join l in _licaoRepository.Queryable() on e.IdLicao equals l.Id where r.Id == request.IdResposta select l.IdCase).FirstOrDefault(); CaseDeNegocio caseDeNegocio = _caseDeNegocioService.ObterPorId(idCase); if (!_caseDeNegocioService.UsuarioEstaAssociadoAoCaseDeNegocioComoProfessor(usuarioLogado, caseDeNegocio)) { throw new Exception("Usuário não possui permissão para atribuir notas."); } resposta.PontosGanhos = request.Pontos; _respostaRepository.Update(resposta); }
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); }
public Resposta GetById(Guid id) { return(_respostaRepository.GetById(id)); }