/** * Collects a list of rule processors, one for each rule within the rule group * * @return array */ protected function collectProcessors() { // Find all rules belonging to this rulegroup $rules = $this->ruleGroup->rules()->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id')->where('rule_triggers.trigger_type', 'user_action')->where('rule_triggers.trigger_value', 'store-journal')->where('rules.active', 1)->get(['rules.*']); // Create a list of processors for these rules return array_map(function ($rule) { return Processor::make($rule); }, $rules->all()); }
/** * @param RuleGroup $ruleGroup * * @return bool */ public function resetRulesInGroupOrder(RuleGroup $ruleGroup) { $ruleGroup->rules()->whereNotNull('deleted_at')->update(['order' => 0]); $set = $ruleGroup->rules()->orderBy('order', 'ASC')->orderBy('updated_at', 'DESC')->get(); $count = 1; /** @var Rule $entry */ foreach ($set as $entry) { $entry->order = $count; $entry->save(); $count++; } return true; }