/** * @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; }