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 @@
+