/**
   * Change the order of a KPI color rule comparing to the other rules of the corresponding KPI.
   *
   * @param kpiColorRuleId the KPI color rule id
   * @param isDecrement if true then we decrement the order, else we increment it
   */
  public Result changeRuleOrder(Long kpiColorRuleId, Boolean isDecrement) {

    KpiColorRule kpiColorRule = KpiColorRule.getById(kpiColorRuleId);

    KpiColorRule kpiColorRuleToReverse = null;
    if (isDecrement) {
      kpiColorRuleToReverse =
          KpiColorRule.getPrevious(kpiColorRule.kpiDefinition.id, kpiColorRule.order);
    } else {
      kpiColorRuleToReverse =
          KpiColorRule.getNext(kpiColorRule.kpiDefinition.id, kpiColorRule.order);
    }

    if (kpiColorRuleToReverse != null) {

      Integer newOrder = kpiColorRuleToReverse.order;

      kpiColorRuleToReverse.order = kpiColorRule.order;
      kpiColorRuleToReverse.save();

      kpiColorRule.order = newOrder;
      kpiColorRule.save();

      reloadKpiDefinition(kpiColorRule.kpiDefinition.uid);
    }

    return redirect(
        controllers.admin.routes.KpiManagerController.view(kpiColorRule.kpiDefinition.id));
  }