Bristol SU Support Package
ActionDispatcher.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use BristolSU\Support\Action\Contracts\ActionBuilder as ActionBuilderContract;
6 use BristolSU\Support\Action\Contracts\ActionRepository as ActionRepositoryContract;
10 
15 {
16 
22  private $builder;
23 
29  public function __construct(ActionBuilderContract $builder)
30  {
31  $this->builder = $builder;
32  }
33 
41  public function handle(TriggerableEvent $event)
42  {
43  $actionInstances = app(\BristolSU\Support\Action\Contracts\ActionInstanceRepository::class)->forEvent(
44  (int) app(ModuleInstance::class)->id, get_class($event)
45  );
46 
47  foreach ($actionInstances as $actionInstance) {
48  $action = $this->builder->build($actionInstance, $event->getFields());
49  if($actionInstance->should_queue) {
50  dispatch($action);
51  } else {
52  dispatch_now($action);
53  }
54  }
55  }
56 
57 }
__construct(ActionBuilderContract $builder)