/** * 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 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 upVoteDica(long idDica) { Dica dica = dao.findByEntityId(Dica.class, idDica); String login = session("login"); if (!dica.wasVotedByUser(login)) { dica.addUsuarioQueVotou(login); dica.incrementaConcordancias(); dao.merge(dica); dao.flush(); } return redirect(routes.Application.tema(dica.getTema().getId())); }
@Transactional @Security.Authenticated(Secured.class) public static Result avaliarDificuldadeTema(long idTema) { DynamicForm filledForm = Form.form().bindFromRequest(); if (filledForm.hasErrors()) { return tema(idTema); } else { Map<String, String> formMap = filledForm.data(); int dificuldade = Integer.parseInt(formMap.get("dificuldade")); String userLogin = session("login"); Tema tema = dao.findByEntityId(Tema.class, idTema); // Tema tema = dao.findByEntityId(Tema.class, id)(Tema) // dao.findByAttributeName("Tema", "name", nomeTema).get(0); tema.incrementarDificuldade(userLogin, dificuldade); dao.merge(tema); dao.flush(); return redirect(routes.Application.tema(idTema)); } }
@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())); } }
@Transactional @Security.Authenticated(Secured.class) public static Result cadastrarDica(long idTema) { DynamicForm filledForm = Form.form().bindFromRequest(); Map<String, String> formMap = filledForm.data(); // long idTema = Long.parseLong(formMap.get("idTema")); Tema tema = dao.findByEntityId(Tema.class, idTema); String userName = session("username"); if (filledForm.hasErrors()) { return tema(idTema); } else { String tipoKey = formMap.get("tipo"); switch (tipoKey) { case "assunto": String assunto = formMap.get("assunto"); DicaAssunto dicaAssunto = new DicaAssunto(assunto); tema.addDica(dicaAssunto); dicaAssunto.setTema(tema); dicaAssunto.setUser(userName); dao.persist(dicaAssunto); break; case "conselho": String conselho = formMap.get("conselho"); DicaConselho dicaConselho = new DicaConselho(conselho); tema.addDica(dicaConselho); dicaConselho.setTema(tema); dicaConselho.setUser(userName); dao.persist(dicaConselho); break; case "disciplina": String disciplinas = formMap.get("disciplinas"); String razao = formMap.get("razao"); DicaDisciplina dicaDisciplina = new DicaDisciplina(disciplinas, razao); tema.addDica(dicaDisciplina); dicaDisciplina.setTema(tema); dicaDisciplina.setUser(userName); dao.persist(dicaDisciplina); break; case "material": String url = formMap.get("url"); DicaMaterial dicaMaterial = new DicaMaterial(url); tema.addDica(dicaMaterial); dicaMaterial.setTema(tema); dicaMaterial.setUser(userName); dao.persist(dicaMaterial); break; default: break; } dao.merge(tema); dao.flush(); return redirect(routes.Application.tema(idTema)); } }
/** * 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())); } }