From 087070b62113f450934ae2988188e1425661b5b6 Mon Sep 17 00:00:00 2001 From: Admin Date: Mon, 17 Aug 2026 13:08:49 -0700 Subject: [PATCH] feat: implement flight show blade and comments flight --- app/Enums/CommentStatus.php | 10 + app/Http/Controllers/CommentController.php | 40 + app/Http/Requests/CommentPostRequest.php | 54 ++ app/Models/Comment.php | 63 +- resources/views/index.blade.php | 881 +-------------------- 5 files changed, 167 insertions(+), 881 deletions(-) create mode 100644 app/Enums/CommentStatus.php create mode 100644 app/Http/Controllers/CommentController.php create mode 100644 app/Http/Requests/CommentPostRequest.php diff --git a/app/Enums/CommentStatus.php b/app/Enums/CommentStatus.php new file mode 100644 index 0000000..5ee416f --- /dev/null +++ b/app/Enums/CommentStatus.php @@ -0,0 +1,10 @@ +store($request, ['flight_id' => $flight->id]); + + return back()->with('success', 'نظر شما با موفقیت ثبت شد.'); + } + + public function storeTour(CommentPostRequest $request, Tour $tour) + { + $this->store($request, ['tour_id' => $tour->id]); + + return back()->with('success', 'نظر شما با موفقیت ثبت شد.'); + } + + private function store(CommentPostRequest $request, array $relation) + { + $data = $request->validated(); + + Comment::create([ + ...$relation, + 'user_id' => auth()->id(), + 'guest_name' => auth()->check() ? null : $data['guest_name'], + 'guest_email' => auth()->check() ? null : $data['guest_email'], + 'comment' => $data['comment'], + 'status' => 0, + ]); + } + +} diff --git a/app/Http/Requests/CommentPostRequest.php b/app/Http/Requests/CommentPostRequest.php new file mode 100644 index 0000000..75bb189 --- /dev/null +++ b/app/Http/Requests/CommentPostRequest.php @@ -0,0 +1,54 @@ +|string> + */ + public function rules(): array + { + $isGuest = !auth()->check(); + + return [ + 'rating' => [ + 'required', + 'integer', + 'between:1,5', + ], + + 'comment' => [ + 'required', + 'string', + 'min:3', + 'max:1000', + ], + + 'guest_name' => [ + $isGuest ? 'required' : 'nullable', + 'string', + 'max:191', + ], + + 'guest_email' => [ + $isGuest ? 'required' : 'nullable', + 'email', + 'max:191', + ], + ]; + } +} diff --git a/app/Models/Comment.php b/app/Models/Comment.php index 66f80f3..99c955c 100644 --- a/app/Models/Comment.php +++ b/app/Models/Comment.php @@ -6,40 +6,63 @@ namespace App\Models; +use App\Enums\CommentStatus; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; /** * Class Comment - * + * * @property int $id - * @property int $user_id + * @property int|null $user_id + * @property int|null $flight_id + * @property int|null $tour_id + * @property string|null $guest_name + * @property string|null $guest_email * @property string $comment * @property int $status - * @property Carbon $created_at - * - * @property User $user + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * + * @property User|null $user + * @property Flight|null $flight + * @property Tour|null $tour * * @package App\Models */ class Comment extends Model { - protected $table = 'comments'; - public $timestamps = false; + protected $table = 'comments'; - protected $casts = [ - 'user_id' => 'int', - 'status' => 'int' - ]; + protected $casts = [ + 'user_id' => 'int', + 'flight_id' => 'int', + 'tour_id' => 'int', + 'status' => CommentStatus::class, + ]; - protected $fillable = [ - 'user_id', - 'comment', - 'status' - ]; + protected $fillable = [ + 'user_id', + 'flight_id', + 'tour_id', + 'guest_name', + 'guest_email', + 'comment', + 'status', + ]; - public function user() - { - return $this->belongsTo(User::class); - } + public function user() + { + return $this->belongsTo(User::class); + } + + public function flight() + { + return $this->belongsTo(Flight::class, 'flight_id'); + } + + public function tour() + { + return $this->belongsTo(Tour::class, 'tour_id'); + } } diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index e3e182a..9c0b6a7 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -21,230 +21,7 @@ -
-
-
- - - -
-
-
+ @include('components.flight-search')
@@ -257,7 +34,8 @@

Easy & Quick Booking

-

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.

+

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان + گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.

@@ -266,7 +44,8 @@

بهترین گارانتی قیمت

-

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.

+

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان + گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.

@@ -275,7 +54,8 @@

خدمات مشتریان 24/7

-

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.

+

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان + گرافیک است. چاپگرها و متون بلکه روزنامه و مجله میباشد.

@@ -290,213 +70,15 @@
پرواز -

محبوب ترین پروازهای ما

+

آخرین پروازهای ما

-
-
-
- - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- ویژه - - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- ذخیره 25% - - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
-
-
-
- - -
-
-
- -

01 مهر 1402 - 30 مهر 1402

-
-
-
- از 500 تومان -
- -
-
-
-
+ + @foreach($flights as $flight) + @include('components.flight') + @endforeach @@ -504,445 +86,22 @@
- -
-
-
-
-
-
-

برنامه های سفر انعطاف پذیر خود را رزرو کنید

-

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان است.

-
- اکنون تماس بگیرید -
-
-
-
-
- - -
+
- مقصد -

محبوب ترین مقاصد ما

+ تور +

آخرین تورهای ما

- -
-
- - -
-
-
-
-
- معامله سفر -

محبوب ترین تخفیف های سفر ما

-
-
-
-
-
-
-
-
نیو یورک
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
هنگ گنگ
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
سن فرانسیسکو
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
لاس وگاس
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
لوس آنجلس
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
سیدنی
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
نیواورلان
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
-
Australia
- 720 تومان -
- اکنون ثبت کن -
-
-
-
-
- - -
-
-
-
- توصیه ها و گواهینامه -

لورم ایپسوم متن ساختگی با تولید سادگی است.

-

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع و بسیار زیادی در این مورد است.

- کاوش کردن بیشتر -
-
-
- -
-
-
-
- - -