feat:complete tours for admin side

This commit is contained in:
2026-08-20 16:50:40 +03:30
parent 1ee787862e
commit 7660124ed5
6 changed files with 37 additions and 18 deletions
+1
View File
@@ -5,5 +5,6 @@ namespace App\Enums;
enum TourStatus:int enum TourStatus:int
{ {
case DISABLE = 0; case DISABLE = 0;
case ENABLE = 1; case ENABLE = 1;
} }
+1 -1
View File
@@ -22,7 +22,7 @@ class TourController extends Controller
public function show(Tour $tour) public function show(Tour $tour)
{ {
abort_if($tour->status !== TourStatus::ENABLE->value, 404); abort_if($tour->status !== TourStatus::ENABLE, 404);
$tour->increment('views'); $tour->increment('views');
+16 -11
View File
@@ -6,6 +6,7 @@
namespace App\Models; namespace App\Models;
use App\Enums\TourStatus;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Contracts\Database\Query\Builder; use Illuminate\Contracts\Database\Query\Builder;
use Illuminate\Database\Eloquent\Attributes\Scope; use Illuminate\Database\Eloquent\Attributes\Scope;
@@ -37,7 +38,7 @@ use Illuminate\Database\Eloquent\Model;
class Tour extends Model class Tour extends Model
{ {
protected $table = 'tours'; protected $table = 'tours';
public $timestamps = false;
public static $snakeAttributes = false; public static $snakeAttributes = false;
@@ -45,24 +46,28 @@ class Tour extends Model
'file_id' => 'int', 'file_id' => 'int',
'duration' => 'int', 'duration' => 'int',
'price' => 'int', 'price' => 'int',
'status' => 'int', 'status' => TourStatus::class,
'created_at' => 'datetime', 'created_at' => 'datetime',
'views' => 'int', 'views' => 'int',
]; ];
protected $fillable = [ protected $fillable = [
'title', 'title',
'summary', 'summary',
'descriptions', 'descriptions',
'file_id', 'file_id',
'origin', 'origin',
'destination', 'destination',
'duration', 'duration',
'price', 'price',
'views', 'views',
'status', 'status',
'created_at' 'created_at',
]; 'start_date',
'end_date',
'capacity',
'updated_at'
];
public function file() public function file()
{ {
+4 -3
View File
@@ -6,13 +6,14 @@
namespace App\Models; namespace App\Models;
use App\Enums\TourDateStatus;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* Class TourDate * Class TourDate
* *
* @property int $id * @property int $id
* @property int $tour_id * @property int $tour_id
* @property Carbon $start_date * @property Carbon $start_date
@@ -22,7 +23,7 @@ use Illuminate\Database\Eloquent\Model;
* @property int $status * @property int $status
* @property Carbon $created_at * @property Carbon $created_at
* @property Carbon $updated_at * @property Carbon $updated_at
* *
* @property Tour $tour * @property Tour $tour
* @property Collection|Booking[] $bookings * @property Collection|Booking[] $bookings
* *
@@ -39,7 +40,7 @@ class TourDate extends Model
'end_date' => 'datetime', 'end_date' => 'datetime',
'price' => 'int', 'price' => 'int',
'capacity' => 'int', 'capacity' => 'int',
'status' => 'int' 'status' => TourDateStatus::class,
]; ];
protected $fillable = [ protected $fillable = [
+7 -2
View File
@@ -1,10 +1,14 @@
<div class="col-md-6 col-lg-4"> <div class="col-md-6 col-lg-4">
<div class="flight-item"> <div class="flight-item">
<div class="flight-img"> <div class="flight-img">
<img <img
src="{{ asset('assets/img/tour/01.jpg') }}" src="{{ $tour->file?->path
alt="" ? asset('storage/' . $tour->file->path)
: asset('assets/img/tour/01.jpg')
}}"
alt="{{ $tour->title }}"
> >
@if(auth()->check()) @if(auth()->check())
@@ -27,6 +31,7 @@
</form> </form>
@else @else
<a <a
href="{{ route('auth.login.index') }}" href="{{ route('auth.login.index') }}"
class="add-wishlist" class="add-wishlist"
+8 -1
View File
@@ -20,7 +20,14 @@
<div class="listing-slider owl-carousel owl-theme" dir="ltr"> <div class="listing-slider owl-carousel owl-theme" dir="ltr">
<img src="{{asset('assets/img/flight/01.jpg')}}" >
@if($tour->file)
<img
src="{{ asset('storage/' . $tour->file->path) }}"
alt="{{ $tour->title }}"
>
@endif
</div> </div>
<div class="listing-header"> <div class="listing-header">