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'); + } +};