From 6a8ecb0030beb52cc030e6cf7d410c5ef4da0ec9 Mon Sep 17 00:00:00 2001 From: Bahar Date: Mon, 17 Aug 2026 16:00:51 +0330 Subject: [PATCH] feat:complete tour index --- app/Http/Controllers/TourController.php | 16 +++++++++- app/Models/Tour.php | 30 +++++++++++++++++++ resources/views/components/tour.blade.php | 36 +++++++++++++---------- 3 files changed, 66 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/TourController.php b/app/Http/Controllers/TourController.php index a0f428e..412dcf0 100644 --- a/app/Http/Controllers/TourController.php +++ b/app/Http/Controllers/TourController.php @@ -2,9 +2,23 @@ namespace App\Http\Controllers; +use App\Enums\FlightStatus; +use App\Enums\TourStatus; +use App\Models\Tour; use Illuminate\Http\Request; class TourController extends Controller { - // + public function index() + { + $tours = Tour::query() + ->where('status', TourStatus::ENABLE) + ->with('file') + ->applySort() + ->paginate() + ->withQueryString(); + + return view('tours.index', compact('tours')); + } + } diff --git a/app/Models/Tour.php b/app/Models/Tour.php index 14049d4..6fea2f6 100644 --- a/app/Models/Tour.php +++ b/app/Models/Tour.php @@ -7,6 +7,8 @@ namespace App\Models; use Carbon\Carbon; +use Illuminate\Contracts\Database\Query\Builder; +use Illuminate\Database\Eloquent\Attributes\Scope; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; @@ -81,4 +83,32 @@ class Tour extends Model { return $this->hasMany(TourDate::class); } + + #[Scope] + protected function applySort(Builder $query): void + { + $request = request(); + + switch ($request->input('sort')) { + case 'most_viewed': + { + $query->orderByDesc('views'); + break; + } + case 'cheapest': + { + $query->orderBy('price'); + break; + } + case 'expensive': + { + $query->orderByDesc('price'); + break; + } + default: + { + $query->orderByDesc('created_at'); + } + } + } } diff --git a/resources/views/components/tour.blade.php b/resources/views/components/tour.blade.php index ad36270..6f5560a 100644 --- a/resources/views/components/tour.blade.php +++ b/resources/views/components/tour.blade.php @@ -1,8 +1,8 @@ -
+
- +
@@ -15,39 +15,44 @@

- - - {{ $tour->duration }} روز + + سفر {{ $tour->duration }} روز + @if($tour->duration > 1) + و {{ $tour->duration - 1 }} شب + @endif

+
+

+ + {{ $tour->summary }} +

+
+ +
از - {{ number_format($tour->price) }} تومان + {{ number_format($tour->price) }} + تومان
- + نمایش جزئیات @@ -59,3 +64,4 @@
+