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 int Adicionar(TrofeuDTO trofeuDTO, Usuario usuarioLogado) { if (trofeuDTO == null || trofeuDTO.Id > 0) { throw new Exception("Solicitação inválida."); } CaseDeNegocio caseDeNegocio = _caseDeNegocioService.ObterPorId(trofeuDTO.IdCase); if (caseDeNegocio == null) { throw new Exception("Case de negócio não encontrado."); } if (!_caseDeNegocioService.UsuarioEstaAssociadoAoCaseDeNegocioComoProfessor(usuarioLogado, caseDeNegocio)) { throw new Exception("Usuário não possui permissão."); } Trofeu trofeu = new Trofeu(); trofeu.IdCase = caseDeNegocio.Id; trofeu.CaseDeNegocio = caseDeNegocio; trofeuDTO.PreencherEntidade(trofeu); Adicionar(trofeu); return(trofeu.Id); }
public int Adicionar(LicaoDTO licaoDTO, Usuario usuarioLogado) { if (licaoDTO == null || licaoDTO.Id.HasValue) { throw new Exception("Solicitação inválida."); } if (licaoDTO.Questoes == null || !licaoDTO.Questoes.Any()) { throw new Exception("É necessário ter pelo menos 1 questão."); } CaseDeNegocio caseDeNegocio = _caseDeNegocioService.ObterPorId(licaoDTO.IdCase); if (caseDeNegocio == null) { throw new Exception("Case de negócio não encontrado."); } if (!_caseDeNegocioService.PermiteUsuarioEditarCaseDeNegocio(usuarioLogado, caseDeNegocio)) { throw new Exception("Usuário não possui permissão para esta solicitação."); } Licao licao = new Licao(); licao.IdCase = caseDeNegocio.Id; licao.CaseDeNegocio = caseDeNegocio; licaoDTO.PreencherEntidade(licao); AtualizarListaDeQuestoes(licao, licaoDTO.Questoes); Adicionar(licao); return(licao.Id); }
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); }