feat:complete tour index

This commit is contained in:
2026-08-17 16:00:51 +03:30
parent 4095f0bed2
commit 6a8ecb0030
3 changed files with 66 additions and 16 deletions
+15 -1
View File
@@ -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'));
}
}
+30
View File
@@ -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');
}
}
}
}
+21 -15
View File
@@ -1,8 +1,8 @@
<div class="col-md-6 col-lg-3">
<div class="col-md-6 col-lg-4">
<div class="flight-item">
<div class="flight-img">
<img src="assets/img/flight/01.jpg" alt>
<div class="flight-img"> <img src="assets/img/flight/01.jpg" alt>
<a href="#" class="add-wishlist">
<i class="far fa-heart"></i>
@@ -15,39 +15,44 @@
<div class="flight-title-info">
<img src="assets/img/flight/airline-1.png" alt>
<h4>
<a href="#">
{{ $tour->origin }}
<i class="far fa-exchange"></i>
{{ $tour->destination }}
<a href="{{ route('tours.show', $tour) }}">
{{ $tour->title }}
</a>
</h4>
</div>
<p class="flight-date">
<i class="far fa-calendar-days"></i>
{{ $tour->duration }} روز
<i class="far fa-clock"></i>
سفر {{ $tour->duration }} روز
@if($tour->duration > 1)
و {{ $tour->duration - 1 }} شب
@endif
</p>
</div>
<div class="mb-3">
<p>
<i class="far fa-location-dot"></i>
{{ $tour->summary }}
</p>
</div>
<div class="flight-bottom">
<div class="flight-price">
از
<span>
{{ number_format($tour->price) }} تومان
{{ number_format($tour->price) }}
تومان
</span>
</div>
<div class="flight-text-btn">
<a href="#">
<a href="{{ route('tours.show', $tour) }}">
نمایش جزئیات
<i class="fas fa-arrow-left"></i>
</a>
@@ -59,3 +64,4 @@
</div>
</div>
</div>