diff --git a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php index de63ee76..bc32c555 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php @@ -9,6 +9,7 @@ use App\Models\PackingList; use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; use App\Classes\ValueObjects\Constants\PerfexCRMTasksYDStages; use App\Classes\ValueObjects\Constants\PerfexCRMTaskStatus; +use App\Models\DelayedJob; use Illuminate\Support\Facades\Log; class PackingListToPerfexCRMProcessor @@ -92,6 +93,29 @@ class PackingListToPerfexCRMProcessor private function dispatchUpdateJob(PackingList $packingList, UpdatePerfexCRMObject $updatePerfexCRMObject) { + try { + /** + * UpdatePerfexCRMPrelude constructor. + * @param $packingList + * @param Transaction $transaction + * @param UpdatePerfexCRMObject $updatePerfexCRMObject + * @param bool|null $shouldCreateInvoice + */ + DelayedJob::create([ + 'job_class' => UpdatePerfexCRMPrelude::class, + 'parameters' => json_encode([ + 'packingList' => $packingList, + 'transaction' => null, + 'updatePerfexCRMObject' => $updatePerfexCRMObject, + 'shouldCreateInvoice' => false, + ]), + 'execute_at' => now()->addMinute(1), + ]); + + } catch (\Exception $e) { + Log::info('An unexpected error occurred when DelayedJob::create: ' . $e->getMessage()); + } + UpdatePerfexCRMPrelude::dispatch($packingList, null, $updatePerfexCRMObject, false); } diff --git a/app/Console/Commands/V2/ProcessDelayedJobsV2Command.php b/app/Console/Commands/V2/ProcessDelayedJobsV2Command.php new file mode 100644 index 00000000..3bbb5e53 --- /dev/null +++ b/app/Console/Commands/V2/ProcessDelayedJobsV2Command.php @@ -0,0 +1,61 @@ +limit(10) + ->get(); + + $count = 0; + foreach ($jobs as $index => $delayedJob) { + $jobClass = $delayedJob->job_class; + $params = json_decode($delayedJob->parameters, true); + + $singleDelayedJob = new $jobClass( + $params['packingList'], + $params['transaction'], + $params['updatePerfexCRMObject'], + $params['shouldCreateInvoice'] + ); + + Log::info('packingList : ' . $params['packingList']); + Log::info('transaction : ' . $params['transaction']); + Log::info('updatePerfexCRMObject : ' . $params['updatePerfexCRMObject']); + Log::info('shouldCreateInvoice : ' . $params['shouldCreateInvoice']); + + // dispatch($singleDelayedJob)->delay(now()->addSeconds($index * 30)); + + // $delayedJob->delete(); + } + Log::info('Total delayed jobs processed and dispatched: ' . $count); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 52f80904..81708430 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -34,6 +34,10 @@ class Kernel extends ConsoleKernel ->everyFiveMinutes() ->withoutOverlapping(); + // $schedule->command('process-delayed-jobs-command') + // ->everyFiveMinutes() + // ->withoutOverlapping(); + $schedule->command('housekeeping-s3-files-command') ->dailyAt('01:00') ->withoutOverlapping(); diff --git a/app/Models/DelayedJob.php b/app/Models/DelayedJob.php new file mode 100644 index 00000000..7727c679 --- /dev/null +++ b/app/Models/DelayedJob.php @@ -0,0 +1,19 @@ +id(); + $table->string('job_class'); + $table->json('parameters'); + $table->timestamp('execute_at'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('jobs_delayed'); + } +}