/** * Action usada para a denúncia de uma Dica considerada como imprópria pelo usuário. * * @param idDica O id da {@code Dica} denunciada. * @return O Result do POST, redirecionando para a página do {@code Tema} caso o POST tenha sido * concluído com sucesso. */ @Transactional @Security.Authenticated(Secured.class) public static Result denunciarDica(Long idDica) { Dica dica = dao.findByEntityId(Dica.class, idDica); String login = session("login"); if (!dica.wasFlaggedByUser(login)) { dica.addUsuarioFlag(login); dica.incrementaFlag(); if (dica.getFlag() == MAX_DENUNCIAS) { dao.removeById(Dica.class, idDica); for (MetaDica metadica : dica.getMetaDicas()) { metadica.getDicasAdicionadas().remove(dica); dao.merge(metadica); } } else { dao.merge(dica); } } else { flash("fail", "Usuário já denunciou a dica."); } dao.flush(); return redirect(routes.Application.tema(dica.getTema().getId())); }
@Transactional @Security.Authenticated(Secured.class) public static Result metadica(long id) { List<Disciplina> listaDisciplina = dao.findAllByClassName(Disciplina.class.getName()); MetaDica metadica = dao.findByEntityId(MetaDica.class, id); Disciplina disciplina = metadica.getDisciplina(); if (disciplina == null || metadica == null) { return erro(); } return ok(views.html.metadica.render(listaDisciplina, disciplina, metadica)); }
@Transactional @Security.Authenticated(Secured.class) public static Result upVoteMetaDica(long idMetaDica) { MetaDica metaDica = dao.findByEntityId(MetaDica.class, idMetaDica); String login = session("login"); if (!metaDica.wasVotedByUser(login)) { metaDica.addUsuarioQueVotou(login); metaDica.incrementaConcordancias(); dao.merge(metaDica); dao.flush(); } return redirect(routes.Application.disciplina(metaDica.getDisciplina().getId())); }
@Transactional @Security.Authenticated(Secured.class) public static Result addDiscordanciaEmMetaDica(long idMetaDica) { DynamicForm filledForm = Form.form().bindFromRequest(); MetaDica metaDica = dao.findByEntityId(MetaDica.class, idMetaDica); if (filledForm.hasErrors()) { return disciplina(metaDica.getDisciplina().getId()); } else { Map<String, String> formMap = filledForm.data(); String username = session("username"); String login = session("login"); String discordancia = formMap.get("discordancia"); metaDica.addUsuarioQueVotou(login); metaDica.addUserCommentary(username, discordancia); metaDica.incrementaDiscordancias(); dao.merge(metaDica); dao.flush(); return redirect(routes.Application.disciplina(metaDica.getDisciplina().getId())); } }
/** * Action para o cadastro de uma metadica em uma disciplina. * * @param idDisciplina O id da {@code Disciplina}. * @return O Result do POST, redirecionando para a página da Disciplina caso o POST tenha sido * concluído com sucesso. */ @Transactional @Security.Authenticated(Secured.class) public static Result cadastrarMetaDica(long idDisciplina) { DynamicForm filledForm = Form.form().bindFromRequest(); Map<String, String> formMap = filledForm.data(); String comment = formMap.get("comentario"); Disciplina disciplina = dao.findByEntityId(Disciplina.class, idDisciplina); String userName = session("username"); if (filledForm.hasErrors()) { return disciplinaErro(disciplina); } else { MetaDica metaDica = new MetaDica(disciplina, userName, comment); Map<String, String[]> map = request().body().asFormUrlEncoded(); String[] checkedDicas = map.get("dica"); String[] checkedMetaDicas = map.get("metadica"); if (checkedDicas == null && checkedMetaDicas == null) { return disciplinaErro(disciplina); } if (checkedDicas != null) { List<String> listaIdDicas = Arrays.asList(checkedDicas); for (String id : listaIdDicas) { Long idDica = Long.parseLong(id); Dica checkedDica = dao.findByEntityId(Dica.class, idDica); if (checkedDica != null) { metaDica.addDica(checkedDica); checkedDica.addMetaDica(metaDica); dao.merge(checkedDica); } } } if (checkedMetaDicas != null) { List<String> listaIdMetaDicas = Arrays.asList(checkedMetaDicas); for (String id : listaIdMetaDicas) { Long idMetaDica = Long.parseLong(id); MetaDica checkedMetaDica = dao.findByEntityId(MetaDica.class, idMetaDica); if (checkedMetaDica != null) { metaDica.addMetaDica(checkedMetaDica); dao.merge(checkedMetaDica); } } } disciplina.addMetaDica(metaDica); dao.persist(metaDica); dao.merge(disciplina); dao.flush(); return redirect(routes.Application.disciplina(metaDica.getDisciplina().getId())); } }