/**
   * Change the order of a KPI definition comparing to the other KPIs with the same object type.
   *
   * @param kpiDefinitionId the KPI definition id
   * @param isDecrement if true then we decrement the order, else we increment it
   */
  public Result changeOrder(Long kpiDefinitionId, Boolean isDecrement) {

    KpiDefinition kpiDefinition = KpiDefinition.getById(kpiDefinitionId);

    KpiDefinition kpiDefinitionToReverse = null;
    if (isDecrement) {
      kpiDefinitionToReverse =
          KpiDefinition.getPrevious(kpiDefinition.objectType, kpiDefinition.order);
    } else {
      kpiDefinitionToReverse = KpiDefinition.getNext(kpiDefinition.objectType, kpiDefinition.order);
    }

    if (kpiDefinitionToReverse != null) {

      Integer newOrder = kpiDefinitionToReverse.order;

      kpiDefinitionToReverse.order = kpiDefinition.order;
      kpiDefinitionToReverse.save();

      kpiDefinition.order = newOrder;
      kpiDefinition.save();
    }

    return redirect(controllers.admin.routes.KpiManagerController.index());
  }