/**
  * @return bool
  */
 public function resetRuleGroupOrder() : bool
 {
     $this->user->ruleGroups()->whereNotNull('deleted_at')->update(['order' => 0]);
     $set = $this->user->ruleGroups()->where('active', 1)->orderBy('order', 'ASC')->get();
     $count = 1;
     /** @var RuleGroup $entry */
     foreach ($set as $entry) {
         $entry->order = $count;
         $entry->save();
         $count++;
     }
     return true;
 }
 /**
  * @param array $data
  *
  * @return Rule
  */
 public function store(array $data) : Rule
 {
     /** @var RuleGroup $ruleGroup */
     $ruleGroup = $this->user->ruleGroups()->find($data['rule_group_id']);
     // get max order:
     $order = $this->getHighestOrderInRuleGroup($ruleGroup);
     // start by creating a new rule:
     $rule = new Rule();
     $rule->user()->associate($data['user_id']);
     $rule->rule_group_id = $data['rule_group_id'];
     $rule->order = $order + 1;
     $rule->active = 1;
     $rule->stop_processing = intval($data['stop_processing']) == 1;
     $rule->title = $data['title'];
     $rule->description = strlen($data['description']) > 0 ? $data['description'] : null;
     $rule->save();
     // start storing triggers:
     $this->storeTriggers($rule, $data);
     // same for actions.
     $this->storeActions($rule, $data);
     return $rule;
 }