feat: add flight details page and comment system for users and guests
This commit is contained in:
@@ -6,4 +6,14 @@ enum FlightTripType: int
|
||||
{
|
||||
case ONEWAY = 0;
|
||||
case ROUNDTRIP = 1;
|
||||
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::ONEWAY => 'یک طرفه',
|
||||
self::ROUNDTRIP => 'رفت و برگشت',
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Enums\FlightStatus;
|
||||
use App\Http\Requests\Flight\FlightCommentStoreRequest;
|
||||
use App\Models\Comment;
|
||||
use App\Models\Flight;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
@@ -29,8 +31,29 @@ class FlightController extends Controller
|
||||
public function show(Flight $flight)
|
||||
{
|
||||
$title = 'جزئیات پرواز';
|
||||
$flight = Flight::findOrFail($flight);
|
||||
|
||||
return view('flights.show' , compact('title' , 'flight'));
|
||||
}
|
||||
|
||||
public function commentStore(FlightCommentStoreRequest $request, Flight $flight)
|
||||
{
|
||||
|
||||
try {
|
||||
Comment::create([
|
||||
'flight_id' => $flight->id,
|
||||
'user_id' => auth()->id(),
|
||||
'parent_id' => $request->parent_id,
|
||||
'guest_name' => auth()->check() ? null : $request->guest_name,
|
||||
'guest_email' => auth()->check() ? null : $request->guest_email,
|
||||
'content' => $request->content,
|
||||
'status' => 0,
|
||||
]);
|
||||
|
||||
return back()->with('success', 'نظر شما با موفقیت ثبت شد.');
|
||||
} catch (\Exception $e) {
|
||||
// return back()
|
||||
// ->withInput()
|
||||
// ->with('error', 'ثبت نظر با خطا مواجه شد.');
|
||||
dd($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Flight;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class FlightCommentStoreRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$isGuest = ! auth()->check();
|
||||
|
||||
return [
|
||||
'guest_name' => [
|
||||
$isGuest ? 'required' : 'nullable',
|
||||
'string',
|
||||
'max:255',
|
||||
],
|
||||
|
||||
'guest_email' => [
|
||||
$isGuest ? 'required' : 'nullable',
|
||||
'email',
|
||||
'max:255',
|
||||
],
|
||||
|
||||
'content' => [
|
||||
'required',
|
||||
'string',
|
||||
'min:5',
|
||||
'max:2000',
|
||||
],
|
||||
|
||||
'parent_id' => [
|
||||
'nullable',
|
||||
'integer',
|
||||
'exists:comments,id',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -7,27 +7,13 @@
|
||||
<input type="file" class="profile-img-file">
|
||||
</div>
|
||||
<h4>{{auth()->user()->first_name . ' ' . auth()->user()->last_name}}</h4>
|
||||
<p><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d7bdb8b9a4b8b997b2afb6baa7bbb2f9b4b8ba">[ایمیل محفوظ]</a></p>
|
||||
</div>
|
||||
<ul class="user-profile-sidebar-list">
|
||||
<li><a class="active" href="{{route('accounts.profile')}}"><i class="far fa-user"></i> نمایه من</a></li>
|
||||
<li><a href="profile-booking.html"><i class="far fa-shopping-bag"></i> رزرو من</a></li>
|
||||
<li><a href="profile-booking-history.html"><i class="far fa-clipboard-list"></i> تاریخچه رزرو</a></li>
|
||||
<li><a href="profile-listing.html"><i class="far fa-globe"></i> فهرست من</a></li>
|
||||
<li class="profile-menu">
|
||||
<a href="#profile-menu" data-bs-toggle="collapse" aria-expanded="false" aria-controls="profile-menu">
|
||||
<i class="far fa-plus-circle"></i> افزودن لیست <i class="far fa-angle-down profile-menu-angle"></i>
|
||||
</a>
|
||||
<div class="collapse" id="profile-menu">
|
||||
<ul class="profile-menu-list">
|
||||
<li><a href="flight-add.html">اضافه کردن پرواز</a></li>
|
||||
<li><a href="tour-add.html">اضافه کردن تور </a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li><a href="profile-wishlist.html"><i class="far fa-heart"></i> علاقه مندی های من</a></li>
|
||||
<li><a href="{{route('accounts.edit-profile.index')}}"><i class="far fa-cog"></i> ویرایش حساب کاربری</a></li>
|
||||
<li><a href="{{route('auth.login.index')}}"><i class="far fa-sign-out"></i> خروج</a></li>
|
||||
<li><a href="{{route('auth.logout')}}"><i class="far fa-sign-out"></i> خروج</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,420 @@
|
||||
<div class="listing-content">
|
||||
<div class="listing-slider owl-carousel owl-theme" dir="ltr">
|
||||
@if ($flight->images && $flight->images->count() > 0)
|
||||
@if ($flight->images->count() > 1)
|
||||
@foreach ($flight->images as $image)
|
||||
<img src="{{ asset($image->path) }}" alt="{{ $flight->flight_number }}">
|
||||
@endforeach
|
||||
@else
|
||||
<img src="{{ asset($flight->images->first()->path) }}" alt="{{ $flight->flight_number }}">
|
||||
@endif
|
||||
@else
|
||||
<img src="{{ asset('assets/img/flight/single-1.jpg') }}" alt="{{ $flight->flight_number }}">
|
||||
@endif
|
||||
</div>
|
||||
<div class="listing-header">
|
||||
<div class="listing-header-info">
|
||||
<h4 class="listing-title">{{$flight->origin_airport->city->name}} - {{$flight->airport->city->name}}</h4>
|
||||
<p class="listing-stop"> سفر {{ $flight->trip_type?->label() }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-item listing-flight">
|
||||
<div class="flight-booking-time">
|
||||
<div class="start-time">
|
||||
<div class="start-time-icon">
|
||||
<i class="fal fa-plane-departure"></i>
|
||||
</div>
|
||||
<div class="start-time-info">
|
||||
<h6 class="start-time-text">پرواز برخاست</h6>
|
||||
<p class="flight-full-date">{{ Verta::instance($flight->departure_time)->format('Y/m/d - H:i') }}</p>
|
||||
<span class="flight-destination">{{$flight->origin_airport->name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="end-time">
|
||||
<div class="start-time-icon">
|
||||
<i class="fal fa-plane-arrival"></i>
|
||||
</div>
|
||||
<div class="start-time-info">
|
||||
<h6 class="end-time-text">فرود پرواز</h6>
|
||||
<p class="flight-full-date">{{ Verta::instance($flight->arrival_time)->format('Y/m/d - H:i') }}</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-item pt-5">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-user-tie"></i>
|
||||
</div>
|
||||
<div class="listing-feature-content">
|
||||
<h6>نوع پرواز</h6>
|
||||
<span>اقتصاد</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-suitcase"></i>
|
||||
</div>
|
||||
<div class="listing-feature-content">
|
||||
<h6>صندلی و چمدان</h6>
|
||||
<span>تومان30 شارژ اضافی</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-cog"></i>
|
||||
</div>
|
||||
<div class="listing-feature-content">
|
||||
<h6>ویژگی های حین پرواز</h6>
|
||||
<span>در دسترس</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-percent"></i>
|
||||
</div>
|
||||
<div class="listing-feature-content">
|
||||
<h6>مالیات و کارمزد</h6>
|
||||
<span>تومان40</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-item">
|
||||
<h4 class="mb-3">درباره شرکت هواپیمایی دلتا</h4>
|
||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون
|
||||
بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع
|
||||
با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه
|
||||
و متخصصان را می طلبد. </p>
|
||||
<p class="mt-3">لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
|
||||
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و
|
||||
کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده
|
||||
شناخت فراوان جامعه و متخصصان را می طلبد. </p>
|
||||
</div>
|
||||
<div class="listing-item">
|
||||
<h4 class="mb-3"> ویژگی های هنگام پرواز</h4>
|
||||
<div class="listing-amenity">
|
||||
<div class="row">
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-wifi"></i> وای فای</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-tv"></i> تلویزیون</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-music"></i> سرگرمی</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-cup-togo"></i> قهوه</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-air-conditioner"></i> تهویه مطبوع</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="fa-regular fa-salad"></i> غذا</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-gamepad-modern"></i> بازی ها</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-wine-bottle"></i> شربت ها</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-couch"></i> راحتی</h6>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="listing-amenity-item">
|
||||
<h6><i class="far fa-image"></i> مجلات</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="listing-item">
|
||||
<h4 class="mb-3">بررسی ها</h4>
|
||||
<div class="listing-rating-box">
|
||||
<div class="listing-review-rating">
|
||||
<div class="listing-rating-count">
|
||||
<h2>4.5</h2>
|
||||
<div class="listing-rating-star">
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
</div>
|
||||
<p>بر اساس 15 هزار بازخورد</p>
|
||||
</div>
|
||||
<div class="listing-rating-range">
|
||||
<div class="listing-rating-range-item">
|
||||
<div class="listing-rating-range-star">
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
</div>
|
||||
<div class="listing-rating-range-bar">
|
||||
<div class="listing-progress">
|
||||
<div class="listing-progress-width" style="width: 90%">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-percentage">
|
||||
<span>90%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-item">
|
||||
<div class="listing-rating-range-star">
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
</div>
|
||||
<div class="listing-rating-range-bar">
|
||||
<div class="listing-progress">
|
||||
<div class="listing-progress-width" style="width: 80%">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-percentage">
|
||||
<span>80%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-item">
|
||||
<div class="listing-rating-range-star">
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
</div>
|
||||
<div class="listing-rating-range-bar">
|
||||
<div class="listing-progress">
|
||||
<div class="listing-progress-width" style="width: 59%">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-percentage">
|
||||
<span>59%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-item">
|
||||
<div class="listing-rating-range-star">
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
</div>
|
||||
<div class="listing-rating-range-bar">
|
||||
<div class="listing-progress">
|
||||
<div class="listing-progress-width" style="width: 70%">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-percentage">
|
||||
<span>70%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-item">
|
||||
<div class="listing-rating-range-star">
|
||||
<i class="fas fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
<i class="far fa-star"></i>
|
||||
</div>
|
||||
<div class="listing-rating-range-bar">
|
||||
<div class="listing-progress">
|
||||
<div class="listing-progress-width" style="width: 49%">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-rating-range-percentage">
|
||||
<span>49%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-review">
|
||||
<h5>نظرات</h5>
|
||||
<div class="listing-review-item">
|
||||
<div class="listing-review-author">
|
||||
<img src="assets/img/account/01.jpg" alt>
|
||||
<div class="listing-review-author-info">
|
||||
<div>
|
||||
<h6>کانت ایوانز</h6>
|
||||
<span><i class="far fa-clock"></i> 1 روز پیش</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
|
||||
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی
|
||||
مورد نیاز و هدف بهبود است.
|
||||
</p>
|
||||
</div>
|
||||
<div class="listing-review-item review-reply-item">
|
||||
<div class="listing-review-author">
|
||||
<img src="assets/img/account/02.jpg" alt>
|
||||
<div class="listing-review-author-info">
|
||||
<div>
|
||||
<h6>اریش تی گنائو</h6>
|
||||
<span><i class="far fa-clock"></i> 1 روز پیش</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
|
||||
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی
|
||||
مورد نیاز و هدف بهبود است.
|
||||
</p>
|
||||
</div>
|
||||
<div class="listing-review-item">
|
||||
<div class="listing-review-author">
|
||||
<img src="assets/img/account/03.jpg" alt>
|
||||
<div class="listing-review-author-info">
|
||||
<div>
|
||||
<h6>جسی سینکلر</h6>
|
||||
<span><i class="far fa-clock"></i> 1 روز پیش</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
|
||||
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی
|
||||
مورد نیاز و هدف بهبود است.
|
||||
</p>
|
||||
</div>
|
||||
<div class="text-center my-4">
|
||||
<a href="#" class="theme-btn"> <span class="far fa-sync-alt"></span>
|
||||
بارگذاری بیشتر</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-review-form">
|
||||
<h4>نظر بدهید</h4>
|
||||
<div class="listing-review-form">
|
||||
@if (session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('error'))
|
||||
<div class="alert alert-danger">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif
|
||||
<h4>نظر بدهید</h4>
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul class="mb-0">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<form action="{{ route('flights.comments.store', $flight) }}" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="parent_id" value="">
|
||||
@auth
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<input type="text"
|
||||
class="form-control"
|
||||
value="{{ auth()->user()->first_name }}"
|
||||
disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<input type="email"
|
||||
class="form-control"
|
||||
value="{{ auth()->user()->email }}"
|
||||
disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<input type="text"
|
||||
name="guest_name"
|
||||
class="form-control"
|
||||
placeholder="اسم شما*"
|
||||
value="{{ old('guest_name') }}">
|
||||
@error('guest_name')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<input type="email"
|
||||
name="guest_email"
|
||||
class="form-control"
|
||||
placeholder="ایمیل شما*"
|
||||
value="{{ old('guest_email') }}">
|
||||
@error('guest_email')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endauth
|
||||
|
||||
<div class="form-group">
|
||||
<textarea name="content"
|
||||
class="form-control"
|
||||
cols="30"
|
||||
rows="5"
|
||||
placeholder="نظر خود را بنویسید*">{{ old('content') }}</textarea>
|
||||
@error('content')
|
||||
<span style="color: red">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<button class="theme-btn" type="submit">نظر بدهید</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,155 @@
|
||||
<div class="booking-sidebar listing-side-content">
|
||||
<div class="booking-item">
|
||||
<div class="listing-price">
|
||||
<h4 class="listing-price-tag">پرواز</h4>
|
||||
<div class="listing-price-amount">
|
||||
<span> {{number_format($flight->price)}} تومان</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-form">
|
||||
<form action="#">
|
||||
@csrf
|
||||
<input type="hidden" name="flight_id" value="{{ $flight->id }}">
|
||||
<div class="tour-search-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<div class="search-form-date">
|
||||
<label for="departure_date">تاریخ رفت</label>
|
||||
<input
|
||||
type="text"
|
||||
id="departure_date"
|
||||
class="form-control"
|
||||
value="{{ verta($flight->departure_time)->format('Y/m/d - H:i') }}"
|
||||
disabled
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<div class="search-form-date">
|
||||
<div class="search-form-return">
|
||||
<label for="return_date">تاریخ برگشت</label>
|
||||
<input
|
||||
type="text"
|
||||
id="return_date"
|
||||
class="form-control"
|
||||
value="{{ $flight->arrival_time }}"
|
||||
disabled
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group dropdown static-dropdown passenger-box">
|
||||
<div class="passenger-class" role="menu" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
|
||||
<label>مسافر، کلاس</label>
|
||||
<div class="form-group-icon">
|
||||
<div class="passenger-total"><span class="passenger-total-amount">2</span>
|
||||
مسافر
|
||||
</div>
|
||||
<i class="fal fa-user-plus"></i>
|
||||
</div>
|
||||
<p class="passenger-class-name">کسب و کار</p>
|
||||
</div>
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
<div class="passenger-info">
|
||||
<h6>بزرگسالان</h6>
|
||||
<p>+12 سال</p>
|
||||
</div>
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn"><i class="far fa-minus"></i></button>
|
||||
<input type="text" name="adult" class="qty-amount passenger-adult" value="2" readonly>
|
||||
<button type="button" class="plus-btn"><i class="far fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
<div class="passenger-info">
|
||||
<h6>کودکان</h6>
|
||||
<p>2 تا 12 سال</p>
|
||||
</div>
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn"><i class="far fa-minus"></i></button>
|
||||
<input type="text" name="children" class="qty-amount passenger-children" value="0" readonly>
|
||||
<button type="button" class="plus-btn"><i class="far fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-item">
|
||||
<h6 class="mb-3 mt-2">کلاس کابین</h6>
|
||||
<div class="passenger-class-info">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" value="Economy" name="cabin-class" id="cabin-class1">
|
||||
<label class="form-check-label" for="cabin-class1">
|
||||
اقتصاد
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" checked type="radio" value="Business" name="cabin-class" id="cabin-class2">
|
||||
<label class="form-check-label" for="cabin-class2">
|
||||
تجارت
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" value="First Class" name="cabin-class" id="cabin-class3">
|
||||
<label class="form-check-label" for="cabin-class3">
|
||||
فرست کلاس
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listing-side-btn">
|
||||
<button type="submit" class="theme-btn"><span class="far fa-shopping-bag"></span>اکنون ثبت کن</button>
|
||||
<a href="#" class="border-btn"><i class="far fa-heart"></i> افزودن به علاقه مندی ها</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="listing-side-share">
|
||||
<a href="#"><i class="far fa-share-nodes"></i> اشتراک</a>
|
||||
<span><i class="far fa-eye"></i> 250 مشاهده</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="booking-sidebar listing-side-content mt-4">
|
||||
<h4 class="booking-title">چرا باید با ما رزرو کنید؟</h4>
|
||||
<ul class="listing-side-list">
|
||||
<li><i class="far fa-dollar-sign"></i>تضمین بهترین قیمت</li>
|
||||
<li><i class="far fa-headset"></i>24/7 مراقبت از مشتری</li>
|
||||
<li><i class="far fa-globe"></i>تورها و فعالیتهای دستچین شده</li>
|
||||
<li><i class="far fa-flag"></i>بیمه مسافرتی رایگان</li>
|
||||
<li><i class="far fa-car"></i>وسیله نقلیه راحت و بهداشتی</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="booking-sidebar listing-side-content mt-4">
|
||||
<h4 class="booking-title">سوالی دریافت کنید؟</h4>
|
||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.</p>
|
||||
<ul class="listing-side-list">
|
||||
<li><i class="far fa-phone"></i><a href="tel:+21234567897">0912345678</a></li>
|
||||
<li><i class="far fa-envelope"></i><a href="/cdn-cgi/l/email-protection#f39a9d959cb3968b929e839f96dd909c9e"><span class="__cf_email__" data-cfemail="31585f575e715449505c415d541f525e5c">[ایمیل محفوظ]</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="booking-sidebar listing-side-content mt-4">
|
||||
<h4 class="booking-title">سازماندهی توسط</h4>
|
||||
<div class="listing-side-organizer">
|
||||
<div class="listing-side-organizer-img">
|
||||
<img src="assets/img/account/01.jpg" alt>
|
||||
</div>
|
||||
<div class="listing-side-organizer-info">
|
||||
<h5 class="listing-side-organizer-name">آژانس مسافرتی رولتاک</h5>
|
||||
<p>عضو از سال 1390</p>
|
||||
<a href="#" class="theme-btn"><span class="far fa-paper-plane"></span> فرستادن پیام</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,3 +1,36 @@
|
||||
<div>
|
||||
<!-- The only way to do great work is to love what you do. - Steve Jobs -->
|
||||
@extends('layouts.app')
|
||||
|
||||
|
||||
@section('content')
|
||||
<main class="main">
|
||||
|
||||
<div class="site-breadcrumb" style="background: url(assets/img/breadcrumb/01.jpg)">
|
||||
<div class="container">
|
||||
<h2 class="breadcrumb-title">پرواز تک</h2>
|
||||
<ul class="breadcrumb-menu">
|
||||
<li><a href="{{route('index')}}">صفحه اصلی</a></li>
|
||||
<li class="active">پرواز تک</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hotel-single py-120">
|
||||
<div class="container">
|
||||
<div class="listing-wrapper">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-8">
|
||||
@include('flights.partials.main')
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
@include('flights.partials.sidebar')
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
@endsection
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<nav class="navbar navbar-expand-lg">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{route('index')}}">
|
||||
<img src="assets/img/logo/logo.png" class="logo-display" alt="logo">
|
||||
<img src="assets/img/logo/logo-dark.png" class="logo-scrolled" alt="logo">
|
||||
<img src="{{asset('assets/img/logo/logo.png')}}" class="logo-display" alt="logo">
|
||||
<img src="{{asset('assets/img/logo/logo-dark.png')}}" class="logo-scrolled" alt="logo">
|
||||
</a>
|
||||
<div class="mobile-menu-right">
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#main_nav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
{{-- resources/views/flights/partials/main_content.blade.php --}}
|
||||
<div class="listing-content">
|
||||
|
||||
<div class="listing-slider owl-carousel owl-theme" dir="ltr">
|
||||
<img src="{{ asset('assets/img/flight/single-1.jpg') }}" alt="image">
|
||||
<img src="{{ asset('assets/img/flight/single-2.jpg') }}" alt="image">
|
||||
<img src="{{ asset('assets/img/flight/single-3.jpg') }}" alt="image">
|
||||
</div>
|
||||
|
||||
<div class="listing-header">
|
||||
<div class="listing-header-info">
|
||||
<h4 class="listing-title">نیویورک - لس آنجلس</h4>
|
||||
<p class="listing-stop">سفر یک طرفه <span class="badge">1 توقف</span></p>
|
||||
</div>
|
||||
<div class="listing-rate">
|
||||
<span class="badge"><i class="fal fa-star"></i> 5.0</span>
|
||||
<span class="listing-rate-type">عالی</span>
|
||||
<span class="listing-rate-review">(2 هزار بازخورد)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="listing-item listing-flight">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="listing-reviews">
|
||||
<h4 class="listing-title">نظرات</h4>
|
||||
<div class="listing-review-form">
|
||||
<h4 class="listing-title">نظر بدهید</h4>
|
||||
<form action="#">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" placeholder="اسم شما*">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<input type="email" class="form-control" placeholder="ایمیل شما*">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea class="form-control" cols="30" rows="5" placeholder="نظر خود را بنویسید*"></textarea>
|
||||
</div>
|
||||
<button class="theme-btn" type="button">نظر بدهید</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
+8
-1
@@ -2,6 +2,7 @@
|
||||
|
||||
use App\Http\Controllers\Account\EditProfileController;
|
||||
use App\Http\Controllers\Account\ProfileController;
|
||||
use App\Http\Controllers\BookingController;
|
||||
use App\Http\Controllers\FlightController;
|
||||
use App\Http\Controllers\IndexController;
|
||||
use App\Http\Controllers\TourController;
|
||||
@@ -11,7 +12,13 @@ Route::get('/' , [IndexController::class , 'index'])->name('index');
|
||||
|
||||
Route::prefix('flights')->controller(FlightController::class)->name('flights.')->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('{flight}','show')->name('show');
|
||||
|
||||
Route::prefix('{flight}')->group(function () {
|
||||
Route::get('/', 'show')->name('show');
|
||||
Route::post('/comment', 'commentStore')->name('comments.store');
|
||||
|
||||
Route::post('/booking', [BookingController::class, 'store'])->name('booking.store');
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('tours')->controller(TourController::class)->name('tours.')->group(function () {
|
||||
|
||||
Reference in New Issue
Block a user