fix: update public tour functionality
This commit is contained in:
@@ -4,9 +4,9 @@ namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\TourStoreRequest;
|
||||
use App\Models\Flight;
|
||||
use App\Models\Tour;
|
||||
use App\Models\TravelType;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
@@ -14,18 +14,37 @@ use Illuminate\Support\Str;
|
||||
|
||||
class TourController extends Controller
|
||||
{
|
||||
/**
|
||||
* لیست تورها
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$tours = Tour::latest()->paginate(10);
|
||||
return view('admin.tours.index', compact('tours'));
|
||||
// همه تورها نمایش داده میشوند
|
||||
// اگر فقط تورهای تایید شده را میخواهی:
|
||||
// ->where('status', 2)
|
||||
$tours = Tour::latest()->paginate(20);
|
||||
|
||||
// آخرین پروازهای تایید شده
|
||||
$flights = Flight::where('status', 2)
|
||||
->latest()
|
||||
->paginate(3);
|
||||
|
||||
return view('admin.tours.index', compact('tours', 'flights'));
|
||||
}
|
||||
|
||||
/**
|
||||
* فرم ایجاد تور
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$travelTypes = TravelType::all();
|
||||
|
||||
return view('admin.tours.create', compact('travelTypes'));
|
||||
}
|
||||
|
||||
/**
|
||||
* ذخیره تور جدید
|
||||
*/
|
||||
public function store(TourStoreRequest $request)
|
||||
{
|
||||
DB::beginTransaction();
|
||||
@@ -33,89 +52,238 @@ class TourController extends Controller
|
||||
try {
|
||||
$data = $request->validated();
|
||||
|
||||
// ساخت slug اگر خالی بود
|
||||
// ساخت slug در صورت خالی بودن
|
||||
if (empty($data['slug'])) {
|
||||
$data['slug'] = Str::slug($data['title']);
|
||||
}
|
||||
|
||||
/*
|
||||
* وضعیت تور
|
||||
*
|
||||
* 1 = در انتظار
|
||||
* 2 = تایید شده
|
||||
*
|
||||
* اگر میخواهی تور بلافاصله در لیست نمایش داده شود،
|
||||
* مقدار 2 قرار میدهیم.
|
||||
*/
|
||||
$data['status'] = 2;
|
||||
|
||||
// ایجاد تور
|
||||
$tour = Tour::create($data);
|
||||
|
||||
// آپلود تصویر
|
||||
if ($request->hasFile('image')) {
|
||||
$image = $request->file('image');
|
||||
$newFileName = time() . '.tour-image' . rand(11111, 99999) . '.' . $image->extension();
|
||||
$path = $image->storeAs('tours', $newFileName, 'public');
|
||||
|
||||
$tour->update(['image' => $path]);
|
||||
$image = $request->file('image');
|
||||
|
||||
$newFileName =
|
||||
time()
|
||||
. '.tour-image'
|
||||
. rand(11111, 99999)
|
||||
. '.'
|
||||
. $image->extension();
|
||||
|
||||
$path = $image->storeAs(
|
||||
'tours',
|
||||
$newFileName,
|
||||
'public'
|
||||
);
|
||||
|
||||
$tour->update([
|
||||
'image' => $path
|
||||
]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
return redirect()->route('admin.tours.index')->with('success', 'تور با موفقیت ایجاد شد.');
|
||||
|
||||
return redirect()
|
||||
->route('admin.tours.index')
|
||||
->with('success', 'تور با موفقیت ایجاد شد.');
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
Log::error($exception);
|
||||
|
||||
DB::rollBack();
|
||||
return back()->withInput()->withErrors(['general' => 'خطایی در ثبت رخ داد.']);
|
||||
|
||||
Log::error($exception);
|
||||
|
||||
return back()
|
||||
->withInput()
|
||||
->withErrors([
|
||||
'general' => 'خطایی در ثبت تور رخ داد.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* نمایش جزئیات تور
|
||||
*/
|
||||
public function show(Tour $tour)
|
||||
{
|
||||
return view('admin.tours.show', compact('tour'));
|
||||
}
|
||||
|
||||
/**
|
||||
* فرم ویرایش تور
|
||||
*/
|
||||
public function edit(Tour $tour)
|
||||
{
|
||||
$travelTypes = TravelType::all();
|
||||
return view('admin.tours.edit', compact('tour', 'travelTypes'));
|
||||
|
||||
return view(
|
||||
'admin.tours.edit',
|
||||
compact('tour', 'travelTypes')
|
||||
);
|
||||
}
|
||||
|
||||
public function update(TourStoreRequest $request, Tour $tour)
|
||||
{
|
||||
/**
|
||||
* بروزرسانی تور
|
||||
*/
|
||||
public function update(
|
||||
TourStoreRequest $request,
|
||||
Tour $tour
|
||||
) {
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
|
||||
$data = $request->validated();
|
||||
|
||||
// ساخت slug
|
||||
if (empty($data['slug'])) {
|
||||
$data['slug'] = Str::slug($data['title']);
|
||||
}
|
||||
|
||||
/*
|
||||
* اگر status از فرم ارسال نشده باشد،
|
||||
* وضعیت فعلی تور حفظ شود.
|
||||
*/
|
||||
if (!isset($data['status'])) {
|
||||
$data['status'] = $tour->status ?? 2;
|
||||
}
|
||||
|
||||
// اگر تصویر جدید آپلود شده
|
||||
if ($request->hasFile('image')) {
|
||||
// حذف عکس قبلی از حافظه
|
||||
if ($tour->image && Storage::disk('public')->exists($tour->image)) {
|
||||
|
||||
// حذف تصویر قبلی
|
||||
if (
|
||||
$tour->image &&
|
||||
Storage::disk('public')->exists($tour->image)
|
||||
) {
|
||||
Storage::disk('public')->delete($tour->image);
|
||||
}
|
||||
|
||||
$image = $request->file('image');
|
||||
$newFileName = time() . '.tour-image' . rand(11111, 99999) . '.' . $image->extension();
|
||||
$path = $image->storeAs('tours', $newFileName, 'public');
|
||||
|
||||
$newFileName =
|
||||
time()
|
||||
. '.tour-image'
|
||||
. rand(11111, 99999)
|
||||
. '.'
|
||||
. $image->extension();
|
||||
|
||||
$path = $image->storeAs(
|
||||
'tours',
|
||||
$newFileName,
|
||||
'public'
|
||||
);
|
||||
|
||||
$data['image'] = $path;
|
||||
}
|
||||
|
||||
// بروزرسانی
|
||||
$tour->update($data);
|
||||
|
||||
DB::commit();
|
||||
return redirect()->route('admin.tours.index')->with('success', 'تور با موفقیت بهروزرسانی شد.');
|
||||
|
||||
return redirect()
|
||||
->route('admin.tours.index')
|
||||
->with(
|
||||
'success',
|
||||
'تور با موفقیت بهروزرسانی شد.'
|
||||
);
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
Log::error($exception);
|
||||
|
||||
DB::rollBack();
|
||||
return back()->withInput()->withErrors(['general' => 'خطایی در بهروزرسانی رخ داد.']);
|
||||
|
||||
Log::error($exception);
|
||||
|
||||
return back()
|
||||
->withInput()
|
||||
->withErrors([
|
||||
'general' =>
|
||||
'خطایی در بهروزرسانی تور رخ داد.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* حذف تصویر تور
|
||||
*/
|
||||
public function removeImage(Tour $tour)
|
||||
{
|
||||
// حذف تصویر تکی (اختیاری — میتوانی منطق دلخواه بگذاری)
|
||||
return back()->with('success', 'عملیات حذف تصویر انجام شد.');
|
||||
try {
|
||||
|
||||
if (
|
||||
$tour->image &&
|
||||
Storage::disk('public')->exists($tour->image)
|
||||
) {
|
||||
Storage::disk('public')->delete($tour->image);
|
||||
}
|
||||
|
||||
$tour->update([
|
||||
'image' => null
|
||||
]);
|
||||
|
||||
return back()->with(
|
||||
'success',
|
||||
'تصویر تور با موفقیت حذف شد.'
|
||||
);
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
|
||||
Log::error($exception);
|
||||
|
||||
return back()->withErrors([
|
||||
'general' =>
|
||||
'حذف تصویر با خطا مواجه شد.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* حذف تور
|
||||
*/
|
||||
public function destroy(Tour $tour)
|
||||
{
|
||||
try {
|
||||
|
||||
// حذف تصویر
|
||||
if (
|
||||
$tour->image &&
|
||||
Storage::disk('public')->exists($tour->image)
|
||||
) {
|
||||
Storage::disk('public')->delete($tour->image);
|
||||
}
|
||||
|
||||
// حذف تور
|
||||
$tour->delete();
|
||||
|
||||
return redirect()->route('admin.tours.index')
|
||||
->with('success', 'تور با موفقیت حذف شد.');
|
||||
return redirect()
|
||||
->route('admin.tours.index')
|
||||
->with(
|
||||
'success',
|
||||
'تور با موفقیت حذف شد.'
|
||||
);
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
|
||||
Log::error($exception);
|
||||
|
||||
return back()->withErrors([
|
||||
'general' =>
|
||||
'حذف تور با خطا مواجه شد.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,65 @@
|
||||
@section('title', 'لیست تورها')
|
||||
|
||||
@section('content')
|
||||
|
||||
{{-- استایل دکمه علاقهمندی (مناسب برای کارتها) --}}
|
||||
<style>
|
||||
.travel-favorite-form {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
z-index: 3;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.travel-favorite-btn {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
border-radius: 50%;
|
||||
border: 1px solid #e0245e;
|
||||
background: rgba(255, 255, 255, .95);
|
||||
color: #e0245e;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-decoration: none;
|
||||
transition: all .2s ease;
|
||||
}
|
||||
|
||||
.travel-favorite-btn:hover,
|
||||
.travel-favorite-btn.active {
|
||||
background: #e0245e;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h1>تورهای ما</h1>
|
||||
|
||||
<div class="row">
|
||||
@forelse($tours as $tour)
|
||||
<div class="col-md-4">
|
||||
@php
|
||||
$isFavTour = in_array($tour->id, $favoriteTourIds ?? []);
|
||||
@endphp
|
||||
|
||||
<div class="col-md-4 position-relative">
|
||||
<x-tour :tour="$tour"/>
|
||||
|
||||
{{-- دکمه علاقهمندی --}}
|
||||
@auth
|
||||
<form action="{{ route('favorites.toggle') }}" method="POST" class="travel-favorite-form">
|
||||
@csrf
|
||||
<input type="hidden" name="favoritable_type" value="{{ \App\Models\Tour::class }}">
|
||||
<input type="hidden" name="favoritable_id" value="{{ $tour->id }}">
|
||||
|
||||
<button type="submit" class="travel-favorite-btn {{ $isFavTour ? 'active' : '' }}">
|
||||
<i class="fa {{ $isFavTour ? 'fa-heart' : 'far fa-heart' }}"></i>
|
||||
</button>
|
||||
</form>
|
||||
@else
|
||||
<a href="{{ route('login') }}" class="travel-favorite-btn">
|
||||
<i class="far fa-heart"></i>
|
||||
</a>
|
||||
@endauth
|
||||
</div>
|
||||
@empty
|
||||
<p>تور فعالی یافت نشد.</p>
|
||||
@@ -15,4 +69,26 @@
|
||||
</div>
|
||||
|
||||
{{ $tours->links() }}
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'لیست تورها')--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
{{-- <h1>تورهای ما</h1>--}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- @forelse($tours as $tour)--}}
|
||||
{{-- <div class="col-md-4">--}}
|
||||
{{-- <x-tour :tour="$tour"/>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
{{-- <p>تور فعالی یافت نشد.</p>--}}
|
||||
{{-- @endforelse--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- {{ $tours->links() }}--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
@@ -1,7 +1,31 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', $tour->title)
|
||||
|
||||
@section('content')
|
||||
|
||||
<style>
|
||||
.travel-favorite-btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
background: transparent;
|
||||
border: 1px solid #e0245e;
|
||||
color: #e0245e;
|
||||
border-radius: 25px;
|
||||
padding: 8px 20px;
|
||||
font-size: .9rem;
|
||||
cursor: pointer;
|
||||
transition: all .2s ease;
|
||||
}
|
||||
|
||||
.travel-favorite-btn:hover,
|
||||
.travel-favorite-btn.active {
|
||||
background: #e0245e;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="tour-details-page">
|
||||
|
||||
<div class="container">
|
||||
@@ -37,6 +61,25 @@
|
||||
{{ $tour->title }}
|
||||
</h1>
|
||||
|
||||
{{-- دکمه علاقهمندی --}}
|
||||
@auth
|
||||
<form action="{{ route('favorites.toggle') }}" method="POST" class="mb-3">
|
||||
@csrf
|
||||
<input type="hidden" name="favoritable_type" value="{{ \App\Models\Tour::class }}">
|
||||
<input type="hidden" name="favoritable_id" value="{{ $tour->id }}">
|
||||
|
||||
<button type="submit" class="travel-favorite-btn {{ $isFav ? 'active' : '' }}">
|
||||
<i class="fa {{ $isFav ? 'fa-heart' : 'far fa-heart' }}"></i>
|
||||
<span>{{ $isFav ? 'در علاقهمندیها' : 'افزودن به علاقهمندی' }}</span>
|
||||
</button>
|
||||
</form>
|
||||
@else
|
||||
<a href="{{ route('login') }}" class="travel-favorite-btn">
|
||||
<i class="far fa-heart"></i>
|
||||
<span>افزودن به علاقهمندی</span>
|
||||
</a>
|
||||
@endauth
|
||||
|
||||
|
||||
{{-- اطلاعات اصلی --}}
|
||||
<div class="tour-details-info">
|
||||
@@ -293,6 +336,303 @@
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
|
||||
{{-- <div class="tour-details-page">--}}
|
||||
|
||||
{{-- <div class="container">--}}
|
||||
|
||||
{{-- <div class="tour-details-card">--}}
|
||||
|
||||
{{-- --}}{{-- تصویر تور --}}
|
||||
{{-- <div class="tour-details-image">--}}
|
||||
|
||||
{{-- @if($tour->image)--}}
|
||||
|
||||
{{-- <img--}}
|
||||
{{-- src="{{ asset('storage/' . $tour->image) }}"--}}
|
||||
{{-- alt="{{ $tour->title }}"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- <div class="tour-no-image">--}}
|
||||
{{-- تصویر برای این تور ثبت نشده است--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- محتوای تور --}}
|
||||
{{-- <div class="tour-details-content">--}}
|
||||
|
||||
{{-- --}}{{-- عنوان --}}
|
||||
{{-- <h1 class="tour-details-title">--}}
|
||||
{{-- {{ $tour->title }}--}}
|
||||
{{-- </h1>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- اطلاعات اصلی --}}
|
||||
{{-- <div class="tour-details-info">--}}
|
||||
|
||||
{{-- --}}{{-- نوع سفر --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- نوع سفر--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $tour->travelType->title ?? 'نامشخص' }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- تاریخ شروع --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- تاریخ حرکت--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $tour->start_date--}}
|
||||
{{-- ? \Carbon\Carbon::parse($tour->start_date)->format('Y/m/d')--}}
|
||||
{{-- : 'نامشخص'--}}
|
||||
{{-- }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- تاریخ پایان --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- تاریخ پایان--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $tour->end_date--}}
|
||||
{{-- ? \Carbon\Carbon::parse($tour->end_date)->format('Y/m/d')--}}
|
||||
{{-- : 'نامشخص'--}}
|
||||
{{-- }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- مدت سفر --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- مدت سفر--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $tour->duration ?? 'نامشخص' }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- قیمت --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- قیمت--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ number_format($tour->price) }}--}}
|
||||
{{-- تومان--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- ظرفیت --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- ظرفیت--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $tour->capacity ?? 'نامحدود' }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- تعداد بازدید --}}
|
||||
{{-- <div class="tour-info-box">--}}
|
||||
|
||||
{{-- <span class="tour-info-label">--}}
|
||||
{{-- تعداد بازدید--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ number_format($tour->views_count) }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- توضیحات --}}
|
||||
{{-- <div class="tour-description">--}}
|
||||
|
||||
{{-- <h2>--}}
|
||||
{{-- توضیحات سفر--}}
|
||||
{{-- </h2>--}}
|
||||
|
||||
{{-- @if($tour->description)--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- {{ $tour->description }}--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- توضیحی برای این تور ثبت نشده است.--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- پروازهای تور --}}
|
||||
{{-- @if($tour->flights && $tour->flights->count())--}}
|
||||
|
||||
{{-- <div class="tour-flights">--}}
|
||||
|
||||
{{-- <h2>--}}
|
||||
{{-- پروازهای این تور--}}
|
||||
{{-- </h2>--}}
|
||||
|
||||
{{-- @foreach($tour->flights as $flight)--}}
|
||||
|
||||
{{-- <div class="flight-item">--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <span>--}}
|
||||
{{-- مبدأ--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $flight->origin ?? '-' }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <span>--}}
|
||||
{{-- مقصد--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- <strong>--}}
|
||||
{{-- {{ $flight->destination ?? '-' }}--}}
|
||||
{{-- </strong>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endforeach--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- تورهای مرتبط --}}
|
||||
{{-- @if($relatedTours->count())--}}
|
||||
|
||||
{{-- <div class="related-tours">--}}
|
||||
|
||||
{{-- <h2>--}}
|
||||
{{-- تورهای مرتبط--}}
|
||||
{{-- </h2>--}}
|
||||
|
||||
{{-- <div class="related-tours-grid">--}}
|
||||
|
||||
{{-- @foreach($relatedTours as $relatedTour)--}}
|
||||
|
||||
{{-- <a--}}
|
||||
{{-- href="{{ route('tours.show', $relatedTour) }}"--}}
|
||||
{{-- class="related-tour-card"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- @if($relatedTour->image)--}}
|
||||
|
||||
{{-- <img--}}
|
||||
{{-- src="{{ asset('storage/' . $relatedTour->image) }}"--}}
|
||||
{{-- alt="{{ $relatedTour->title }}"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <h3>--}}
|
||||
{{-- {{ $relatedTour->title }}--}}
|
||||
{{-- </h3>--}}
|
||||
|
||||
{{-- <span>--}}
|
||||
{{-- @if($relatedTour->start_date)--}}
|
||||
{{-- {{ \Carbon\Carbon::parse($relatedTour->start_date)->format('Y/m/d') }}--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- @endforeach--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- دکمه بازگشت --}}
|
||||
{{-- <div class="tour-back">--}}
|
||||
|
||||
{{-- <a--}}
|
||||
{{-- href="{{ route('tours.index') }}"--}}
|
||||
{{-- class="tour-back-button"--}}
|
||||
{{-- >--}}
|
||||
{{-- بازگشت به لیست تورها--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
{{-- resources/views/tours/show.blade.php --}}
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
@@ -301,7 +641,7 @@
|
||||
{{--@section('content')--}}
|
||||
{{-- <div class="container py-5 mt-4">--}}
|
||||
|
||||
{{-- --}}{{-- اطلاعات تور --}}
|
||||
{{-- --}}{{----}}{{-- اطلاعات تور --}}
|
||||
{{-- <div class="card mb-4 shadow-sm">--}}
|
||||
{{-- <div class="card-body">--}}
|
||||
{{-- <h2 class="card-title">{{ $tour->name }}</h2>--}}
|
||||
@@ -325,7 +665,7 @@
|
||||
{{-- </div>--}}
|
||||
{{-- </section>--}}
|
||||
|
||||
{{-- --}}{{-- ===== فرم رزرو تور ===== --}}
|
||||
{{-- --}}{{----}}{{-- ===== فرم رزرو تور ===== --}}
|
||||
{{-- @auth--}}
|
||||
{{-- <section class="pb-5">--}}
|
||||
{{-- <div class="container">--}}
|
||||
@@ -351,7 +691,7 @@
|
||||
{{-- </div>--}}
|
||||
{{-- </section>--}}
|
||||
{{-- @else--}}
|
||||
{{-- --}}{{-- کاربر لاگین نیست => دکمه ورود به روت login --}}
|
||||
{{-- --}}{{----}}{{-- کاربر لاگین نیست => دکمه ورود به روت login --}}
|
||||
{{-- <div class="alert alert-warning text-center">--}}
|
||||
{{-- برای رزرو تور ابتدا <a href="{{ route('login') }}">وارد شوید</a>.--}}
|
||||
{{-- </div>--}}
|
||||
@@ -365,7 +705,7 @@
|
||||
{{--@section('content')--}}
|
||||
{{-- <h1>{{ $tour->title }}</h1>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- گالری تصاویر (اسلایدر) --}}
|
||||
{{-- --}}{{----}}{{----}}{{----}}{{-- گالری تصاویر (اسلایدر) --}}
|
||||
{{-- <div id="tourGallery" class="carousel slide" data-bs-ride="carousel">--}}
|
||||
{{-- @foreach ($tour->images as $image)--}}
|
||||
{{-- <div class="carousel-item @if($loop->first) active @endif">--}}
|
||||
@@ -377,13 +717,13 @@
|
||||
{{-- <p>{{ $tour->description }}</p>--}}
|
||||
{{-- <p>تاریخ شروع: {{ $tour->start_date?->format('Y/m/d') }}</p>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- پروازهای این تور --}}
|
||||
{{-- --}}{{----}}{{----}}{{----}}{{-- پروازهای این تور --}}
|
||||
{{-- <h3>پروازهای همراه</h3>--}}
|
||||
{{-- @foreach ($tour->flights as $flight)--}}
|
||||
{{-- <x-flight :flight="$flight"/>--}}
|
||||
{{-- @endforeach--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- نظرات --}}
|
||||
{{-- --}}{{----}}{{----}}{{----}}{{-- نظرات --}}
|
||||
{{-- <h3>نظرات ({{ $tour->comments->count() }})</h3>--}}
|
||||
{{-- @foreach ($tour->comments as $comment)--}}
|
||||
{{-- <x-comment :comment="$comment"/>--}}
|
||||
|
||||
Reference in New Issue
Block a user