UserGroupObserver.php 1000 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Observers;
  3. use App\Jobs\VNet\reloadNode;
  4. use App\Models\Node;
  5. use App\Models\UserGroup;
  6. use Arr;
  7. class UserGroupObserver
  8. {
  9. public function created(UserGroup $userGroup): void
  10. {
  11. $nodes = Node::whereType(4)->whereIn('id', $userGroup->nodes)->get();
  12. if ($nodes) {
  13. reloadNode::dispatchNow($nodes);
  14. }
  15. }
  16. public function updated(UserGroup $userGroup): void
  17. {
  18. $changes = $userGroup->getChanges();
  19. if (Arr::exists($changes, 'nodes')) {
  20. $nodes = Node::whereType(4)
  21. ->whereIn(
  22. 'id',
  23. array_diff(
  24. $userGroup->nodes,
  25. $userGroup->getOriginal('nodes') ?: []
  26. )
  27. )
  28. ->get();
  29. if ($nodes) {
  30. reloadNode::dispatchNow($nodes);
  31. }
  32. }
  33. }
  34. }