From 76b0fbf56540c5ad5230defe8a102e7b82361ad0 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 8 Sep 2025 09:54:36 +0330 Subject: [PATCH 1/2] create job for nikarayan --- .../Dashboard/RoadObservationController.php | 4 ++- .../UpdateRoadObservedInfoByNikarayanJob.php | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php diff --git a/app/Http/Controllers/V2/Dashboard/RoadObservationController.php b/app/Http/Controllers/V2/Dashboard/RoadObservationController.php index e1a829ae..1a855bdf 100644 --- a/app/Http/Controllers/V2/Dashboard/RoadObservationController.php +++ b/app/Http/Controllers/V2/Dashboard/RoadObservationController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\V2\Dashboard; use App\Http\Controllers\Controller; +use App\Jobs\UpdateRoadObservedInfoByNikarayanJob; use App\Services\NikarayanService; use Illuminate\Http\Request; use Hekmatinasser\Verta\Verta; @@ -570,7 +571,8 @@ class RoadObservationController extends Controller // } // $url = "https://riws.rmto.ir/WebServices/NRPTrafficStatus.asmx?wsdl"; try { - $result = $nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, $files_path); +// $result = $nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, $files_path); + $result = UpdateRoadObservedInfoByNikarayanJob::dispatch($request, $roadObserved, $files_path); } catch (SoapFault $e) { $msg = "error in send to nikarayan at" . date("Y-m-d H:i:s") . "\n" . 'rms: error in get road observation webservice babe!!!!' . "\n"; diff --git a/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php b/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php new file mode 100644 index 00000000..4f8c0755 --- /dev/null +++ b/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php @@ -0,0 +1,34 @@ +updateRoadObservedInfoByNikarayan($this->request, $this->roadObserved, $this->files); + } +} From dbd6c893450e7baae5abbc21f0336b7a9d296663 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 8 Sep 2025 11:16:24 +0330 Subject: [PATCH 2/2] create nikarayan fault model --- .../UpdateRoadObservedInfoByNikarayanJob.php | 17 +++++++++-- app/Models/NikarayanFault.php | 19 ++++++++++++ app/Models/RoadObserved.php | 6 ++++ database/factories/NikarayanFaultFactory.php | 18 +++++++++++ ...8_104051_create_nikarayan_faults_table.php | 30 +++++++++++++++++++ 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 app/Models/NikarayanFault.php create mode 100644 database/factories/NikarayanFaultFactory.php create mode 100644 database/migrations/2025_09_08_104051_create_nikarayan_faults_table.php diff --git a/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php b/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php index 4f8c0755..df80e747 100644 --- a/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php +++ b/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php @@ -2,6 +2,7 @@ namespace App\Jobs; +use App\Models\NikarayanFault; use App\Models\RoadObserved; use App\Services\NikarayanService; use Illuminate\Bus\Queueable; @@ -11,6 +12,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Http\Request; use Illuminate\Queue\SerializesModels; use SoapFault; +use Throwable; class UpdateRoadObservedInfoByNikarayanJob implements ShouldQueue { @@ -27,8 +29,19 @@ class UpdateRoadObservedInfoByNikarayanJob implements ShouldQueue * Execute the job. * @throws SoapFault */ - public function handle(NikarayanService $nikarayanService): void + public function handle(NikarayanService $nikarayanService) { - $nikarayanService->updateRoadObservedInfoByNikarayan($this->request, $this->roadObserved, $this->files); + return $nikarayanService->updateRoadObservedInfoByNikarayan($this->request, $this->roadObserved, $this->files); + } + + /** + * Handle a job failure. + */ + public function failed(?Throwable $exception): void + { + NikarayanFault::query()->create([ + 'road_observed_id' => $this->roadObserved->id, + 'response' => $exception->getMessage(), + ]); } } diff --git a/app/Models/NikarayanFault.php b/app/Models/NikarayanFault.php new file mode 100644 index 00000000..e7c30ad1 --- /dev/null +++ b/app/Models/NikarayanFault.php @@ -0,0 +1,19 @@ +belongsTo(RoadObserved::class); + } +} diff --git a/app/Models/RoadObserved.php b/app/Models/RoadObserved.php index 3b9f3449..f7a28c01 100644 --- a/app/Models/RoadObserved.php +++ b/app/Models/RoadObserved.php @@ -5,6 +5,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Support\Facades\Storage; @@ -136,4 +137,9 @@ class RoadObserved extends Model 'mission_id', ); } + + public function nikarayanFaults(): HasMany + { + return $this->hasMany(NikarayanFault::class); + } } diff --git a/database/factories/NikarayanFaultFactory.php b/database/factories/NikarayanFaultFactory.php new file mode 100644 index 00000000..ed6469f2 --- /dev/null +++ b/database/factories/NikarayanFaultFactory.php @@ -0,0 +1,18 @@ +id(); + $table->foreignId('road_observed_id')->constrained('road_observeds'); + $table->text('response'); + $table->timestamps()->default(DB::raw('CURRENT_TIMESTAMP')); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('nikarayan_faults'); + } +};