/** * Action usada para a denúncia de uma MetaDica considerada como imprópria pelo usuário. * * @param idDica O id da {@code MetaDica} denunciada. * @return O Result do POST, redirecionando para a página da {@code Disciplina} caso o POST tenha * sido concluído com sucesso. */ @Transactional @Security.Authenticated(Secured.class) public static Result denunciarMetaDica(Long idMetaDica) { MetaDica metaDica = dao.findByEntityId(MetaDica.class, idMetaDica); String login = session("login"); if (!metaDica.wasFlaggedByUser(login)) { metaDica.addUsuarioFlag(login); metaDica.incrementaFlag(); if (metaDica.getFlag() == MAX_DENUNCIAS) { dao.removeById(MetaDica.class, idMetaDica); } else { dao.merge(metaDica); } } else { flash("fail", "Usuário já denunciou a dica."); } dao.flush(); return redirect(routes.Application.disciplina(metaDica.getDisciplina().getId())); }