From edee575b56e21fa2e55494abaf9d0e1cb5529f34 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 17 Feb 2025 10:51:46 +0330 Subject: [PATCH] update the job --- .../SendRoadObservationToNikarayanCommand.php | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/app/Console/Commands/SendRoadObservationToNikarayanCommand.php b/app/Console/Commands/SendRoadObservationToNikarayanCommand.php index f7c2130c..1fb1759a 100644 --- a/app/Console/Commands/SendRoadObservationToNikarayanCommand.php +++ b/app/Console/Commands/SendRoadObservationToNikarayanCommand.php @@ -5,6 +5,7 @@ namespace App\Console\Commands; use App\Jobs\SendRoadObservationToNikarayan; use App\Models\RoadObserved; use Illuminate\Console\Command; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; class SendRoadObservationToNikarayanCommand extends Command @@ -28,19 +29,26 @@ class SendRoadObservationToNikarayanCommand extends Command */ public function handle(): void { - $this->info("Dispatching jobs with 2 seconds delay between each..."); + $count = 0; + $this->info("Dispatching jobs with a delay between each..."); - RoadObserved::query() - ->whereBetween('StartTime_DateTime_fa', ['1403-01-01 00:00:00', '1403-07-14 23:59:59']) - ->chunk(50, function ($roads) { - foreach ($roads as $road) { - $road->update(['rms_status' => 1]); - SendRoadObservationToNikarayan::dispatch($road)->delay(now()->addSeconds(2)); - Log::channel('road_observation_problem')->info("Job for Road Observed ID {$road->id} scheduled with 2 seconds delay."); - $this->info("Scheduled job for Road ID: {$road->id} (Delay: 2s)"); - } - }); + DB::transaction(function () use ($count) { + $delay = 0; + RoadObserved::query() + ->whereBetween('StartTime_DateTime_fa', ['1403-01-01 00:00:00', '1403-07-13 23:59:59']) + ->where('rms_status', '=', 0) + ->chunk(50, function ($roads) use ($delay, $count) { + foreach ($roads as $road) { + $road->update(['rms_status' => 1]); + SendRoadObservationToNikarayan::dispatch($road)->delay(now()->addMinutes(10)->addSeconds($delay)); + Log::channel('road_observation_problem')->info("Job for Road Observed ID {$road->id} scheduled with a {$delay} seconds delay."); + $this->info("Scheduled job for Road ID: {$road->id} {$delay}s"); + $delay += 3; + $count +=1; + } + }); + }); - $this->info("all item's sent successfully"); + $this->info("{$count} item's sent successfully"); } }