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..df80e747 --- /dev/null +++ b/app/Jobs/UpdateRoadObservedInfoByNikarayanJob.php @@ -0,0 +1,47 @@ +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'); + } +};