예제 #1
0
 @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()));
 }
예제 #2
0
  /**
   * 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()));
  }
예제 #3
0
  @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()));
    }
  }
예제 #4
0
  /**
   * 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()));
    }
  }