diff --git a/app/Abstracts/JobShouldQueue.php b/app/Abstracts/JobShouldQueue.php index 4a3c6e8da..33a93ba24 100644 --- a/app/Abstracts/JobShouldQueue.php +++ b/app/Abstracts/JobShouldQueue.php @@ -12,10 +12,10 @@ use App\Traits\Jobs; use App\Traits\Relationships; use App\Traits\Sources; use App\Traits\Uploads; +use App\Utilities\QueueCollection; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Collection; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; @@ -48,7 +48,7 @@ abstract class JobShouldQueue implements ShouldQueue } $request = $this->getRequestInstance($arguments[0]); - if ($request instanceof Collection) { + if ($request instanceof QueueCollection) { $this->request = $request; } @@ -72,7 +72,7 @@ abstract class JobShouldQueue implements ShouldQueue } $request = $this->getRequestInstance($arguments[1]); - if ($request instanceof Collection) { + if ($request instanceof QueueCollection) { $this->request = $request; } } @@ -110,7 +110,7 @@ abstract class JobShouldQueue implements ShouldQueue * Covert the request to collection. * * @param mixed $request - * @return \Illuminate\Support\Collection + * @return \App\Utilities\QueueCollection */ public function getRequestAsCollection($request) { @@ -122,12 +122,12 @@ abstract class JobShouldQueue implements ShouldQueue $request->merge($data); } - return collect($request->all()); + return new QueueCollection($request->all()); } public function setOwner(): void { - if (! $this->request instanceof Collection) { + if (! $this->request instanceof QueueCollection) { return; } @@ -140,7 +140,7 @@ abstract class JobShouldQueue implements ShouldQueue public function setSource(): void { - if (! $this->request instanceof Collection) { + if (! $this->request instanceof QueueCollection) { return; } diff --git a/app/Providers/Queue.php b/app/Providers/Queue.php index 38efefe26..bba23b7c2 100644 --- a/app/Providers/Queue.php +++ b/app/Providers/Queue.php @@ -37,6 +37,10 @@ class Queue extends Provider }); app('events')->listen(JobProcessing::class, function ($event) { + if (! defined('APP_RUNNING_IN_QUEUE')) { + define('APP_RUNNING_IN_QUEUE', true); + } + $payload = $event->job->payload(); if (!array_key_exists('company_id', $payload)) { diff --git a/app/Traits/Sources.php b/app/Traits/Sources.php index 5f4706ebc..810f91917 100644 --- a/app/Traits/Sources.php +++ b/app/Traits/Sources.php @@ -2,6 +2,7 @@ namespace App\Traits; +use App\Utilities\QueueCollection; use Illuminate\Support\Str; trait Sources @@ -29,7 +30,11 @@ trait Sources if (empty($source)) { $request = $request ?: request(); - $source = $request->isApi() ? $prefix . 'api' : null; + if ($request instanceof QueueCollection || running_in_queue()) { + $source = $prefix . 'queue'; + } else { + $source = $request->isApi() ? $prefix . 'api' : null; + } } if (empty($source)) { diff --git a/app/Utilities/QueueCollection.php b/app/Utilities/QueueCollection.php new file mode 100644 index 000000000..660db5d06 --- /dev/null +++ b/app/Utilities/QueueCollection.php @@ -0,0 +1,10 @@ +