RuleGroupObserver.php 725 B

12345678910111213141516171819202122232425262728
  1. <?php
  2. namespace App\Observers;
  3. use App\Jobs\VNet\reloadNode;
  4. use App\Models\Node;
  5. use App\Models\RuleGroup;
  6. use Arr;
  7. class RuleGroupObserver {
  8. public function updated(RuleGroup $ruleGroup): void {
  9. $changes = $ruleGroup->getChanges();
  10. if(Arr::exists($changes, 'type') || Arr::exists($changes, 'rules')){
  11. $nodes = Node::whereType(4)->whereIn('id', $ruleGroup->nodes)->get();
  12. if($nodes){
  13. reloadNode::dispatchNow($nodes);
  14. }
  15. }elseif(Arr::exists($changes, 'nodes')){
  16. $nodes = Node::whereType(4)
  17. ->whereIn('id',
  18. array_diff($ruleGroup->nodes, $ruleGroup->getOriginal('nodes')?: []))
  19. ->get();
  20. if($nodes){
  21. reloadNode::dispatchNow($nodes);
  22. }
  23. }
  24. }
  25. }