@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())); }
/** * 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())); }
@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())); } }