From ecc48a3f572984e195fbd286d179c1da4ad84b7f Mon Sep 17 00:00:00 2001 From: mina-esn Date: Sat, 22 Aug 2026 11:04:56 +0330 Subject: [PATCH] fix: resolve force-delete for tours in panel admin --- app/Http/Controllers/Admin/TourController.php | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Admin/TourController.php b/app/Http/Controllers/Admin/TourController.php index c3de752..ef9cbd0 100644 --- a/app/Http/Controllers/Admin/TourController.php +++ b/app/Http/Controllers/Admin/TourController.php @@ -16,6 +16,7 @@ use Hekmatinasser\Verta\Verta; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Storage; class TourController extends Controller { @@ -325,14 +326,41 @@ class TourController extends Controller ->with('success', 'تور با موفقیت بازگردانی شد.'); } - public function forceDelete($id) + + public function forceDelete($id) { - $tour = Tour::onlyTrashed()->findOrFail($id); + $tour = Tour::onlyTrashed() + ->with('images.file') + ->findOrFail($id); - $tour->forceDelete(); + try { + DB::transaction(function () use ($tour) { + foreach ($tour->images as $image) { + $file = $image->file; - return redirect() - ->route('admin.tours.trash.index') - ->with('success', 'تور به‌صورت دائمی حذف شد.'); + if ($file) { + + Storage::disk('public')->delete($file->path); + + $file->delete(); + } + + + $image->delete(); + } + + + $tour->forceDelete(); + }); + + return redirect() + ->route('admin.tours.trash.index') + ->with('success', 'تور و تمام تصاویر و فایل‌های آن به‌صورت دائمی حذف شدند.'); + } catch (\Throwable $exception) { + report($exception); + + return back() + ->with('error', 'حذف دائمی تور انجام نشد.'); + } } }