Compare commits
8 Commits
07e6dc7f5d
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e3924d929 | |||
| 691290c340 | |||
| 7719d750e9 | |||
| 6addcf73bb | |||
| 9e38c63614 | |||
| f73800fa50 | |||
| e322ddda8f | |||
| 64bfa2b94f |
@@ -17,7 +17,7 @@ class CommentController extends Controller
|
||||
$tour->comments()->create([
|
||||
'user_id' => auth()->id(),
|
||||
'body' => $request->validated('body'),
|
||||
'status' => 1, // در انتظار تایید (طبق قرارداد: 1 = پیشنویس/فعال، 2 = منتشرشده)
|
||||
'status' => 1,
|
||||
]);
|
||||
|
||||
return back()->with('success', 'نظر شما با موفقیت ثبت شد.');
|
||||
|
||||
@@ -15,7 +15,7 @@ class FavoriteController extends Controller
|
||||
|
||||
$user = Auth::user();
|
||||
|
||||
$favorites = Favorite::with('favoritable') // لود پلیمورفیک
|
||||
$favorites = Favorite::with('favoritable')
|
||||
->where('user_id', $user->id)
|
||||
->orderByDesc('id')
|
||||
->paginate(9);
|
||||
@@ -23,10 +23,6 @@ class FavoriteController extends Controller
|
||||
return view('account.favorites', compact('favorites'));
|
||||
}
|
||||
|
||||
/**
|
||||
* افزودن/حذف به صورت toggle (اگر موجود بود حذف کن، اگر نبود بساز).
|
||||
* این متد با پلیمورفیک بودن Favorite از هر دو مدل تور و پرواز پشتیبانی میکنه.
|
||||
*/
|
||||
public function toggle(Request $request)
|
||||
{
|
||||
// چک اینکه کاربر ورود شدهست
|
||||
@@ -42,7 +38,7 @@ class FavoriteController extends Controller
|
||||
$type = $data['favoritable_type'];
|
||||
$id = $data['favoritable_id'];
|
||||
|
||||
// بررسی اینکه مدل درخواستی واقعاً وجود داره (مثلاً Tour یا Flight)
|
||||
|
||||
if (!class_exists($type)) {
|
||||
return back()->with('error', 'مدل معتبر نیست');
|
||||
}
|
||||
|
||||
@@ -13,9 +13,7 @@ use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/**
|
||||
* نمایش فرم ثبت نام
|
||||
*/
|
||||
|
||||
public function index()
|
||||
{
|
||||
$provinces = Province::orderBy('name')->get();
|
||||
@@ -24,9 +22,7 @@ class RegisterController extends Controller
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ثبت نام کاربر
|
||||
*/
|
||||
|
||||
public function post(RegisterPostRequest $request)
|
||||
{
|
||||
|
||||
@@ -86,9 +82,6 @@ class RegisterController extends Controller
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* دریافت شهرستانهای یک استان
|
||||
*/
|
||||
public function cities(Province $province)
|
||||
{
|
||||
$cities = City::where('province_id', $province->id)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CommentController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Tour;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class FavoriteController extends Controller
|
||||
{
|
||||
public function toggle(Request $request)
|
||||
{
|
||||
$type = $request->input('favoritable_type');
|
||||
$id = $request->input('favoritable_id');
|
||||
|
||||
// چک کنید اگر null بود، متوقف شود
|
||||
if (!$type || !$id) {
|
||||
return back()->withErrors('اطلاعات ارسالی ناقص است!');
|
||||
}
|
||||
|
||||
$user = auth()->user();
|
||||
|
||||
|
||||
$exists = $user->favorites()
|
||||
->where('favoritable_type', $type)
|
||||
->where('favoritable_id', $id)
|
||||
->first();
|
||||
|
||||
if ($exists) {
|
||||
// اگر وجود داشت، حذفش کن
|
||||
$exists->delete();
|
||||
$message = 'از علاقهمندیها حذف شد.';
|
||||
} else {
|
||||
// اگر وجود نداشت، یک رکورد جدید بساز
|
||||
$user->favorites()->create([
|
||||
'favoritable_type' => $type,
|
||||
'favoritable_id' => $id,
|
||||
]);
|
||||
$message = 'به علاقهمندیها اضافه شد.';
|
||||
}
|
||||
|
||||
return back()->with('success', $message);
|
||||
}
|
||||
}
|
||||
@@ -8,9 +8,7 @@ use Illuminate\Http\Request;
|
||||
|
||||
class FlightController extends Controller
|
||||
{
|
||||
/**
|
||||
* لیست پروازهای فعال
|
||||
*/
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = Flight::query()
|
||||
@@ -56,9 +54,7 @@ class FlightController extends Controller
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* جستجوی پروازها
|
||||
*/
|
||||
|
||||
public function search(Request $request)
|
||||
{
|
||||
$query = Flight::query()
|
||||
@@ -108,15 +104,9 @@ class FlightController extends Controller
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* جزئیات پرواز
|
||||
*/
|
||||
|
||||
public function show(Flight $flight)
|
||||
{
|
||||
// // فقط پرواز فعال قابل مشاهده باشد
|
||||
// if (!$flight->isActive()) {
|
||||
// abort(404);
|
||||
// }
|
||||
|
||||
$flight->load([
|
||||
'travelType',
|
||||
|
||||
@@ -13,12 +13,12 @@ class IndexController extends Controller
|
||||
$tours = Tour::query()
|
||||
->where('status', 1)
|
||||
->orderByDesc('created_at')
|
||||
->paginate(6, ['*'], 'tours_page');
|
||||
->paginate(3, ['*'], 'tours_page');
|
||||
|
||||
$flights = Flight::query()
|
||||
->where('status', 1)
|
||||
->orderByDesc('created_at')
|
||||
->paginate(6, ['*'], 'flights_page');
|
||||
->paginate(3, ['*'], 'flights_page');
|
||||
|
||||
$latestTours= Tour::latest()->limit(6)->get();
|
||||
$latestFlights = Flight::latest()->limit(6)->get();
|
||||
|
||||
@@ -13,15 +13,15 @@ use Illuminate\Http\Request;
|
||||
|
||||
class TourController extends Controller
|
||||
{
|
||||
/**
|
||||
* لیست / آرشیو تورها با قابلیت فیلتر
|
||||
*/
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = Tour::query()
|
||||
->where('status', 1)
|
||||
->with(['travelType', 'flights']);
|
||||
|
||||
|
||||
|
||||
if ($request->filled('travel_type')) {
|
||||
$query->where('travel_type_id', $request->input('travel_type'));
|
||||
}
|
||||
@@ -44,15 +44,18 @@ class TourController extends Controller
|
||||
$query->latest();
|
||||
}
|
||||
|
||||
$tours = $query->paginate(9);
|
||||
$travelTypes = TravelType::where('status', 1)->get();
|
||||
if ($request->routeIs('index')) {
|
||||
|
||||
return view('tours.index', compact('tours', 'travelTypes'));
|
||||
$tours = $query->latest()->limit(4)->get();
|
||||
return view('index', compact('tours'));
|
||||
} else {
|
||||
|
||||
$tours = $query->latest()->paginate(2);
|
||||
$travelTypes = TravelType::where('status', 1)->get();
|
||||
return view('tours.index', compact('tours', 'travelTypes'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* نمایش جزئیات یک تور
|
||||
*/
|
||||
public function show(Tour $tour)
|
||||
{
|
||||
if ($tour->status != 1) {
|
||||
@@ -75,7 +78,7 @@ class TourController extends Controller
|
||||
->where('travel_type_id', $tour->travel_type_id)
|
||||
->where('id', '!=', $tour->id)
|
||||
->latest()
|
||||
->limit(4)
|
||||
->limit(3)
|
||||
->get();
|
||||
|
||||
$isFav = false;
|
||||
@@ -117,160 +120,3 @@ class TourController extends Controller
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//namespace App\Http\Controllers;
|
||||
//
|
||||
//use App\Models\Favorite;
|
||||
//use App\Models\Tour;
|
||||
//use App\Models\TravelType;
|
||||
//use Illuminate\Http\Request;
|
||||
//
|
||||
//class TourController extends Controller
|
||||
//{
|
||||
// /**
|
||||
// * لیست / آرشیو تورها با قابلیت فیلتر
|
||||
// */
|
||||
// public function index(Request $request)
|
||||
// {
|
||||
// $query = Tour::query()
|
||||
// ->where('status', 1)
|
||||
// ->with(['travelType', 'flights']);
|
||||
//
|
||||
// // فیلتر بر اساس نوع سفر
|
||||
// if ($request->filled('travel_type')) {
|
||||
// $query->where(
|
||||
// 'travel_type_id',
|
||||
// $request->input('travel_type')
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// // جستجو بر اساس عنوان
|
||||
// if ($request->filled('q')) {
|
||||
// $query->where(
|
||||
// 'title',
|
||||
// 'like',
|
||||
// '%' . $request->input('q') . '%'
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// // حداقل قیمت
|
||||
// if ($request->filled('price_min')) {
|
||||
// $query->where(
|
||||
// 'price',
|
||||
// '>=',
|
||||
// $request->input('price_min')
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// // حداکثر قیمت
|
||||
// if ($request->filled('price_max')) {
|
||||
// $query->where(
|
||||
// 'price',
|
||||
// '<=',
|
||||
// $request->input('price_max')
|
||||
// );
|
||||
// }
|
||||
//
|
||||
// // مرتبسازی
|
||||
// if ($request->filled('sort')) {
|
||||
// $query->orderBy(
|
||||
// 'price',
|
||||
// $request->input('sort') === 'desc'
|
||||
// ? 'desc'
|
||||
// : 'asc'
|
||||
// );
|
||||
// } else {
|
||||
// $query->latest();
|
||||
// }
|
||||
//
|
||||
// // صفحهبندی
|
||||
// $tours = $query->paginate(9);
|
||||
//
|
||||
// // انواع سفر
|
||||
// $travelTypes = TravelType::where('status', 1)->get();
|
||||
//
|
||||
// return view(
|
||||
// 'tours.index',
|
||||
// compact('tours', 'travelTypes')
|
||||
// );
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * حذف فیلترها
|
||||
// */
|
||||
// public function removeFilters()
|
||||
// {
|
||||
// return redirect()->route('tours.index');
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * نمایش جزئیات یک تور
|
||||
// */
|
||||
// public function show(Tour $tour)
|
||||
// {
|
||||
// // فقط تورهای فعال قابل مشاهده باشند
|
||||
// if ($tour->status != 1) {
|
||||
// abort(404);
|
||||
// }
|
||||
//
|
||||
// // افزایش تعداد بازدید
|
||||
// $tour->increment('views_count');
|
||||
//
|
||||
// // بارگذاری اطلاعات مورد نیاز
|
||||
// $tour->load([
|
||||
// 'flights',
|
||||
// 'travelType',
|
||||
// ]);
|
||||
//
|
||||
// // تورهای مرتبط
|
||||
// $relatedTours = Tour::where('status', 1)
|
||||
// ->where('travel_type_id', $tour->travel_type_id)
|
||||
// ->where('id', '!=', $tour->id)
|
||||
// ->latest()
|
||||
// ->limit(4)
|
||||
// ->get();
|
||||
//
|
||||
// $isFav = false;
|
||||
//
|
||||
// if (auth()->check()) {
|
||||
// $isFav = Favorite::where('user_id', auth()->id())
|
||||
// ->where('favoritable_type', Tour::class)
|
||||
// ->where('favoritable_id', $tour->id)
|
||||
// ->exists();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// return view(
|
||||
// 'tours.show',
|
||||
// compact('tour', 'relatedTours', 'isFav')
|
||||
// );
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * جستجوی پیشنهادی
|
||||
// */
|
||||
// public function searchSuggestion(Request $request)
|
||||
// {
|
||||
// $q = $request->input('q', '');
|
||||
//
|
||||
// $tours = Tour::where('status', 1)
|
||||
// ->where(
|
||||
// 'title',
|
||||
// 'like',
|
||||
// '%' . $q . '%'
|
||||
// )
|
||||
// ->limit(8)
|
||||
// ->get([
|
||||
// 'id',
|
||||
// 'title',
|
||||
// 'slug',
|
||||
// 'price'
|
||||
// ]);
|
||||
//
|
||||
// return response()->json($tours);
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -67,8 +67,9 @@ class AdminController extends Controller
|
||||
|
||||
public function update(
|
||||
AdminUpdateRequest $request,
|
||||
Admin $admin
|
||||
) {
|
||||
Admin $admin
|
||||
)
|
||||
{
|
||||
$data = $request->validated();
|
||||
|
||||
$permissions = $data['permissions'] ?? [];
|
||||
@@ -96,7 +97,6 @@ class AdminController extends Controller
|
||||
->with('success', 'مدیر با موفقیت ویرایش شد.');
|
||||
}
|
||||
|
||||
|
||||
public function destroy(Admin $admin)
|
||||
{
|
||||
$admin->permissions()->detach();
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\CityStoreRequest;
|
||||
use App\Http\Requests\CityUpdateRequest;
|
||||
use App\Models\City;
|
||||
use App\Models\Province;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CityController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = City::with('province');
|
||||
if ($request->filled('province_id')) {
|
||||
$query->where('province_id', $request->province_id);
|
||||
}
|
||||
$cities = $query->paginate(20);
|
||||
$provinces = Province::all();
|
||||
return view('admin.cities.index', compact('cities', 'provinces'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$provinces = Province::all();
|
||||
return view('admin.cities.create', compact('provinces'));
|
||||
}
|
||||
|
||||
// استفاده از CityRequest به جای Request
|
||||
public function store(CityStoreRequest $request)
|
||||
{
|
||||
City::create($request->validated());
|
||||
return redirect()->route('admin.locations.cities.index')->with('success', 'شهر با موفقیت ایجاد شد.');
|
||||
}
|
||||
|
||||
public function edit(City $city)
|
||||
{
|
||||
$provinces = Province::all();
|
||||
return view('admin.cities.edit', compact('city', 'provinces'));
|
||||
}
|
||||
|
||||
public function update(CityUpdateRequest $request, City $city)
|
||||
{
|
||||
$city->update($request->validated());
|
||||
return redirect()->route('admin.locations.cities.index')->with('success', 'شهر ویرایش شد.');
|
||||
}
|
||||
|
||||
public function destroy(City $city)
|
||||
{
|
||||
$city->delete();
|
||||
return back()->with('success', 'شهر حذف شد.');
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\CommentUpdateRequest;
|
||||
use App\Http\Requests\UpdateCommentRequest;
|
||||
use App\Models\Comment;
|
||||
|
||||
class CommentController extends Controller
|
||||
@@ -23,10 +22,6 @@ class CommentController extends Controller
|
||||
return view('admin.comments.show', compact('comment'));
|
||||
}
|
||||
|
||||
// public function edit(Comment $comment)
|
||||
// {
|
||||
// return view('admin.comments.edit', compact('comment'));
|
||||
// }
|
||||
|
||||
public function update(CommentUpdateRequest $request, Comment $comment)
|
||||
{
|
||||
|
||||
@@ -78,9 +78,7 @@ class FlightController extends Controller
|
||||
return view('admin.flights.show', compact('flight'));
|
||||
}
|
||||
|
||||
/**
|
||||
* نمایش فرم ویرایش پرواز
|
||||
*/
|
||||
|
||||
public function edit(Flight $flight)
|
||||
{
|
||||
abort_unless(auth('admin')->user()?->canManageFlights('update'), 403);
|
||||
@@ -90,9 +88,7 @@ class FlightController extends Controller
|
||||
return view('admin.flights.edit', compact('flight', 'travelTypes'));
|
||||
}
|
||||
|
||||
/**
|
||||
* بروزرسانی پرواز
|
||||
*/
|
||||
|
||||
public function update(FlightUpdateRequest $request, Flight $flight)
|
||||
{
|
||||
abort_unless(auth('admin')->user()?->canManageFlights('update'), 403);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\ProvinceUpdateRequest;
|
||||
use App\Models\Province;
|
||||
|
||||
class ProvinceController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$provinces = Province::paginate(20);
|
||||
return view('admin.provinces.index', compact('provinces'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('admin.provinces.create');
|
||||
}
|
||||
|
||||
|
||||
public function store(ProvinceUpdateRequest $request)
|
||||
{
|
||||
Province::create($request->validated());
|
||||
return redirect()->route('admin.locations.provinces.index')->with('success', 'استان با موفقیت ایجاد شد.');
|
||||
}
|
||||
|
||||
public function edit(Province $province)
|
||||
{
|
||||
return view('admin.provinces.edit', compact('province'));
|
||||
}
|
||||
|
||||
public function update(ProvinceUpdateRequest $request, Province $province)
|
||||
{
|
||||
$province->update($request->validated());
|
||||
return redirect()->route('admin.locations.provinces.index')->with('success', 'استان ویرایش شد.');
|
||||
}
|
||||
|
||||
public function destroy(Province $province)
|
||||
{
|
||||
$province->delete();
|
||||
return back()->with('success', 'استان حذف شد.');
|
||||
}
|
||||
}
|
||||
@@ -14,13 +14,9 @@ use Illuminate\Support\Str;
|
||||
|
||||
class TourController extends Controller
|
||||
{
|
||||
/**
|
||||
* لیست تورها
|
||||
*/
|
||||
|
||||
public function index()
|
||||
{
|
||||
// همه تورها نمایش داده میشوند
|
||||
// اگر فقط تورهای تایید شده را میخواهی:
|
||||
// ->where('status', 2)
|
||||
$tours = Tour::latest()->paginate(20);
|
||||
|
||||
@@ -57,15 +53,6 @@ class TourController extends Controller
|
||||
$data['slug'] = Str::slug($data['title']);
|
||||
}
|
||||
|
||||
/*
|
||||
* وضعیت تور
|
||||
*
|
||||
* 1 = در انتظار
|
||||
* 2 = تایید شده
|
||||
*
|
||||
* اگر میخواهی تور بلافاصله در لیست نمایش داده شود،
|
||||
* مقدار 2 قرار میدهیم.
|
||||
*/
|
||||
$data['status'] = 2;
|
||||
|
||||
// ایجاد تور
|
||||
@@ -114,17 +101,13 @@ class TourController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* نمایش جزئیات تور
|
||||
*/
|
||||
|
||||
public function show(Tour $tour)
|
||||
{
|
||||
return view('admin.tours.show', compact('tour'));
|
||||
}
|
||||
|
||||
/**
|
||||
* فرم ویرایش تور
|
||||
*/
|
||||
|
||||
public function edit(Tour $tour)
|
||||
{
|
||||
$travelTypes = TravelType::all();
|
||||
@@ -135,9 +118,7 @@ class TourController extends Controller
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* بروزرسانی تور
|
||||
*/
|
||||
|
||||
public function update(
|
||||
TourStoreRequest $request,
|
||||
Tour $tour
|
||||
@@ -153,10 +134,6 @@ class TourController extends Controller
|
||||
$data['slug'] = Str::slug($data['title']);
|
||||
}
|
||||
|
||||
/*
|
||||
* اگر status از فرم ارسال نشده باشد،
|
||||
* وضعیت فعلی تور حفظ شود.
|
||||
*/
|
||||
if (!isset($data['status'])) {
|
||||
$data['status'] = $tour->status ?? 2;
|
||||
}
|
||||
@@ -217,9 +194,6 @@ class TourController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* حذف تصویر تور
|
||||
*/
|
||||
public function removeImage(Tour $tour)
|
||||
{
|
||||
try {
|
||||
@@ -251,9 +225,7 @@ class TourController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* حذف تور
|
||||
*/
|
||||
|
||||
public function destroy(Tour $tour)
|
||||
{
|
||||
try {
|
||||
|
||||
@@ -10,9 +10,7 @@ use Illuminate\Http\Request;
|
||||
|
||||
class TravelTypeController extends Controller
|
||||
{
|
||||
/**
|
||||
* لیست + جستجو + صفحهبندی انواع سفر
|
||||
*/
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
abort_unless(auth('admin')->user()->canManageTravelTypes('view'), 403);
|
||||
@@ -27,7 +25,7 @@ class TravelTypeController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
// فیلتر وضعیت (1=فعال، 0=غیرفعال)
|
||||
// فیلتر وضعیت
|
||||
if ($request->filled('status')) {
|
||||
$query->where('status', $request->status);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ class UserController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
// چک دسترسی: فقط مدیرانی که مجوز «مشاهده کاربران» دارند
|
||||
abort_unless(auth('admin')->user()->canManageUsers('view'), 403);
|
||||
// abort_unless(auth('admin')->user()->canManageUsers('view'), 403);
|
||||
|
||||
$query = User::query();
|
||||
|
||||
@@ -57,7 +57,7 @@ class UserController extends Controller
|
||||
|
||||
public function update(UserUpdateRequest $request, User $user)
|
||||
{
|
||||
abort_unless(auth('admin')->user()->canManageUsers('edit'), 403);
|
||||
// abort_unless(auth('admin')->user()->canManageUsers('edit'), 403);
|
||||
|
||||
$data = $request->validated();
|
||||
|
||||
@@ -82,14 +82,14 @@ class UserController extends Controller
|
||||
|
||||
public function changePassword(User $user)
|
||||
{
|
||||
abort_unless(auth('admin')->user()->canManageUsers('password'), 403);
|
||||
// abort_unless(auth('admin')->user()->canManageUsers('password'), 403);
|
||||
|
||||
return view('admin.users.change-password', compact('user'));
|
||||
}
|
||||
|
||||
public function updatePassword(UserUpdateRequest $request, User $user)
|
||||
public function updatePassword(UserPasswordUpdateRequest $request, User $user)
|
||||
{
|
||||
abort_unless(auth('admin')->user()->canManageUsers('password'), 403);
|
||||
// abort_unless(auth('admin')->user()->canManageUsers('password'), 403);
|
||||
|
||||
$user->update([
|
||||
'password' => Hash::make($request->password),
|
||||
|
||||
@@ -14,6 +14,7 @@ class AirportStoreRequest extends FormRequest
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
// کد فرودگاه همیشه با حروف بزرگ ذخیره شود (IATA)
|
||||
@@ -68,18 +69,4 @@ class AirportStoreRequest extends FormRequest
|
||||
'code' => 'کد فرودگاه',
|
||||
];
|
||||
}
|
||||
|
||||
// public function messages(): array
|
||||
// {
|
||||
// return [
|
||||
// 'name.required' => 'نام فرودگاه الزامی است.',
|
||||
// 'name.max' => 'نام فرودگاه حداکثر ۱۵۰ کاراکتر باشد.',
|
||||
// 'city.required' => 'نام شهر الزامی است.',
|
||||
// 'city.max' => 'نام شهر حداکثر ۱۰۰ کاراکتر باشد.',
|
||||
// 'country.required' => 'نام کشور الزامی است.',
|
||||
// 'country.max' => 'نام کشور حداکثر ۱۰۰ کاراکتر باشد.',
|
||||
// 'code.required' => 'کد فرودگاه (IATA) الزامی است.',
|
||||
// 'code.max' => 'کد فرودگاه حداکثر ۱۰ کاراکتر باشد.',
|
||||
// ];
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -30,8 +30,7 @@ class RegisterPostRequest extends FormRequest
|
||||
'persian_alpha',
|
||||
'string',
|
||||
'min:3',
|
||||
'max:100',
|
||||
// 'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
||||
'max:100'
|
||||
],
|
||||
|
||||
|
||||
@@ -39,8 +38,7 @@ class RegisterPostRequest extends FormRequest
|
||||
'required',
|
||||
'persian_alpha',
|
||||
'string',
|
||||
'max:100',
|
||||
// 'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
||||
'max:100'
|
||||
],
|
||||
|
||||
|
||||
@@ -70,8 +68,7 @@ class RegisterPostRequest extends FormRequest
|
||||
'nullable',
|
||||
'string',
|
||||
'max:200',
|
||||
'required_if:marital_status,2',
|
||||
// 'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
||||
'required_if:marital_status,2'
|
||||
],
|
||||
|
||||
|
||||
@@ -79,7 +76,6 @@ class RegisterPostRequest extends FormRequest
|
||||
'required',
|
||||
'digits:11',
|
||||
'ir_mobile:zero',
|
||||
// 'regex:/^09\d{9}$/',
|
||||
'unique:users,mobile',
|
||||
],
|
||||
|
||||
@@ -98,7 +94,6 @@ class RegisterPostRequest extends FormRequest
|
||||
'string',
|
||||
'min:3',
|
||||
'max:50',
|
||||
// 'regex:/^[A-Za-z0-9]+$/',
|
||||
'unique:users,username',
|
||||
],
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class CityStoreRequest 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
|
||||
{
|
||||
return [
|
||||
'name' =>
|
||||
[
|
||||
'required',
|
||||
'string',
|
||||
'max:100'
|
||||
],
|
||||
'province_id' =>
|
||||
[
|
||||
'required',
|
||||
'exists:provinces,id'
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Enums\PaymentStatus;
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class CityUpdateRequest 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
|
||||
{
|
||||
return [
|
||||
'name' =>
|
||||
[
|
||||
'required',
|
||||
'string',
|
||||
'max:100'
|
||||
],
|
||||
'province_id' =>
|
||||
[
|
||||
'required',
|
||||
'exists:provinces,id'
|
||||
],
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class ProvinceUpdateRequest 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
|
||||
{
|
||||
return [
|
||||
'name' =>
|
||||
[
|
||||
'required',
|
||||
'string',
|
||||
'max:100'
|
||||
],
|
||||
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -29,9 +29,7 @@ class SettingUpdateRequest extends FormRequest
|
||||
$this->merge($filtered);
|
||||
}
|
||||
|
||||
/**
|
||||
* قوانین اعتبارسنجی.
|
||||
*/
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
$codes = Setting::pluck('code')->all();
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Contracts\Validation\ValidationRule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class UserPasswordUpdateRequest 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
|
||||
{
|
||||
return [
|
||||
// چک کردن رمز فعلی کاربر
|
||||
'current_password' =>
|
||||
[
|
||||
'nullable',
|
||||
'current_password'
|
||||
],
|
||||
'password' =>
|
||||
[
|
||||
'required',
|
||||
'string',
|
||||
'min:8',
|
||||
'confirmed'
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -47,15 +47,4 @@ class UserStoreRequest extends FormRequest
|
||||
],
|
||||
];
|
||||
}
|
||||
// public function messages(): array
|
||||
// {
|
||||
// return [
|
||||
// 'name.required' => 'نام و نام خانوادگی الزامی است.',
|
||||
// 'email.required' => 'ایمیل الزامی است.',
|
||||
// 'email.email' => 'فرمت ایمیل معتبر نیست.',
|
||||
// 'email.unique' => 'این ایمیل قبلاً ثبت شده است.',
|
||||
// 'password.required' => 'رمز عبور الزامی است.',
|
||||
// 'password.confirmed' => 'تکرار رمز عبور مطابقت ندارد.',
|
||||
// ];
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -23,19 +23,24 @@ class UserUpdateRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' =>
|
||||
'first_name' =>
|
||||
[
|
||||
'required',
|
||||
'string',
|
||||
'max:255'
|
||||
'max:100'
|
||||
],
|
||||
'last_name' =>
|
||||
[
|
||||
'required',
|
||||
'string',
|
||||
'max:100'
|
||||
],
|
||||
'email' =>
|
||||
[
|
||||
'required',
|
||||
'nullable',
|
||||
'email',
|
||||
'max:255',
|
||||
'unique:users',
|
||||
'email,' . $this->user->id
|
||||
'unique:users,email,' . $this->user->id,
|
||||
],
|
||||
|
||||
'mobile' =>
|
||||
|
||||
@@ -86,96 +86,3 @@ class Admin extends Authenticatable
|
||||
return $this->status == 1;
|
||||
}
|
||||
}
|
||||
//
|
||||
///**
|
||||
// * Created by Reliese Model.
|
||||
// */
|
||||
//
|
||||
//namespace App\Models;
|
||||
//
|
||||
//use App\Enums\AdminStatus;
|
||||
//use Carbon\Carbon;
|
||||
//use Illuminate\Auth\Middleware\Authenticate;
|
||||
//use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
//use Illuminate\Database\Eloquent\Model;
|
||||
//
|
||||
////use Illuminate\Foundation\Auth\Admin as User;
|
||||
////use Illuminate\Foundation\Auth\Admin as Authenticate;
|
||||
//
|
||||
//
|
||||
///**
|
||||
// * Class Admin
|
||||
// *
|
||||
// * @property int $id
|
||||
// * @property string $full_name
|
||||
// * @property string $username
|
||||
// * @property string $email
|
||||
// * @property string $mobile
|
||||
// * @property string $password
|
||||
// * @property int $status
|
||||
// * @property Carbon $created_at
|
||||
// * @property Carbon $updated_at
|
||||
// *
|
||||
// * @package App\Models
|
||||
// */
|
||||
//class Admin extends Authenticate
|
||||
//{
|
||||
// protected $table = 'admins';
|
||||
//
|
||||
// public static $snakeAttributes = false;
|
||||
//
|
||||
// protected $casts = [
|
||||
// 'status' => 'int',
|
||||
// ];
|
||||
//
|
||||
// protected $hidden = [
|
||||
// 'password',
|
||||
// ];
|
||||
//
|
||||
// protected $fillable = [
|
||||
// 'full_name',
|
||||
// 'username',
|
||||
// 'email',
|
||||
// 'mobile',
|
||||
// 'password',
|
||||
// 'status',
|
||||
// ];
|
||||
//
|
||||
// public function permissions()
|
||||
// {
|
||||
// return $this->belongsToMany(
|
||||
// Permission::class,
|
||||
// 'admin_permission',
|
||||
// 'admin_id',
|
||||
// 'permission_id'
|
||||
// );
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * بررسی دسترسی مدیر به ماژول مدیریت کاربران
|
||||
// *
|
||||
// * @param string $action view|edit|delete|password
|
||||
// */
|
||||
// public function canManageUsers(string $action): bool
|
||||
// {
|
||||
// // مدیریت کاربران فقط برای مدیر فعال مجاز است
|
||||
// return $this->status == 1;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public function canManageTravelTypes(string $action): bool
|
||||
// {
|
||||
// return $this->status == 1;
|
||||
// }
|
||||
//
|
||||
// public function canManageFlights(string $action): bool
|
||||
// {
|
||||
// return $this->status == 1;
|
||||
// }
|
||||
//
|
||||
// public function canManageTours(string $action): bool
|
||||
// {
|
||||
// return $this->status == 1;
|
||||
// }
|
||||
//}
|
||||
|
||||
+1
-11
@@ -53,19 +53,9 @@ class Comment extends Model
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
// ✅ رابطه پلیمورفیک: نظر میتونه متعلق به محصول، خبر، پست و... باشه
|
||||
// رابطه پلیمورفیک
|
||||
public function commentable(): MorphTo
|
||||
{
|
||||
return $this->morphTo();
|
||||
}
|
||||
|
||||
// public function comment()
|
||||
// {
|
||||
// return $this->belongsTo(Comment::class, 'commentable_id');
|
||||
// }
|
||||
//
|
||||
// public function comments()
|
||||
// {
|
||||
// return $this->hasMany(Comment::class, 'commentable_id');
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class Favorite extends Model
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
// رابطه پلیمورفیک: علاقهمندی میتونه به محصول، خبر، پست و... وصل باشه
|
||||
// رابطه پلیمورفیک
|
||||
public function favoritable(): MorphTo
|
||||
{
|
||||
return $this->morphTo();
|
||||
|
||||
+54
-36
@@ -36,45 +36,45 @@ use Illuminate\Database\Eloquent\Model;
|
||||
*/
|
||||
class Tour extends Model
|
||||
{
|
||||
protected $table = 'tours';
|
||||
public static $snakeAttributes = false;
|
||||
protected $table = 'tours';
|
||||
public static $snakeAttributes = false;
|
||||
|
||||
protected $casts = [
|
||||
'travel_type_id' => 'int',
|
||||
'start_date' => 'datetime',
|
||||
'end_date' => 'datetime',
|
||||
'price' => 'float',
|
||||
'capacity' => 'int',
|
||||
'views_count' => 'int',
|
||||
'status' => 'int'
|
||||
];
|
||||
protected $casts = [
|
||||
'travel_type_id' => 'int',
|
||||
'start_date' => 'datetime',
|
||||
'end_date' => 'datetime',
|
||||
'price' => 'float',
|
||||
'capacity' => 'int',
|
||||
'views_count' => 'int',
|
||||
'status' => 'int'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'travel_type_id',
|
||||
'title',
|
||||
'slug',
|
||||
'image',
|
||||
'description',
|
||||
'duration',
|
||||
'start_date',
|
||||
'end_date',
|
||||
'price',
|
||||
'capacity',
|
||||
'views_count',
|
||||
'status'
|
||||
];
|
||||
protected $fillable = [
|
||||
'travel_type_id',
|
||||
'title',
|
||||
'slug',
|
||||
'image',
|
||||
'description',
|
||||
'duration',
|
||||
'start_date',
|
||||
'end_date',
|
||||
'price',
|
||||
'capacity',
|
||||
'views_count',
|
||||
'status'
|
||||
];
|
||||
|
||||
public function travelType()
|
||||
{
|
||||
return $this->belongsTo(TravelType::class);
|
||||
}
|
||||
public function travelType()
|
||||
{
|
||||
return $this->belongsTo(TravelType::class);
|
||||
}
|
||||
|
||||
public function flights()
|
||||
{
|
||||
return $this->belongsToMany(Flight::class, 'tour_flights')
|
||||
->withPivot('id')
|
||||
->withTimestamps();
|
||||
}
|
||||
public function flights()
|
||||
{
|
||||
return $this->belongsToMany(Flight::class, 'tour_flights')
|
||||
->withPivot('id')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
// در فایل App\Models\Tour.php و App\Models\Flight.php
|
||||
|
||||
@@ -83,6 +83,23 @@ class Tour extends Model
|
||||
return $this->morphMany(Comment::class, 'commentable');
|
||||
}
|
||||
|
||||
public function favorites()
|
||||
{
|
||||
return $this->morphMany(\App\Models\Favorite::class, 'favoritable');
|
||||
}
|
||||
|
||||
|
||||
public function isFavoritedBy($user)
|
||||
{
|
||||
if (!$user) return false;
|
||||
|
||||
// استفاده از فیلدهای پلیمورفیک به جای tour_id
|
||||
return $this->favorites()
|
||||
->where('user_id', $user->id)
|
||||
->where('favoritable_id', $this->id)
|
||||
->where('favoritable_type', Tour::class)
|
||||
->exists();
|
||||
}
|
||||
|
||||
|
||||
protected static function booted()
|
||||
@@ -93,7 +110,8 @@ class Tour extends Model
|
||||
$tour->views_count = 0;
|
||||
}
|
||||
if (is_null($tour->status)) {
|
||||
$tour->status = 0; // فرض بر اینکه 0 یعنی غیرفعال/پیشنویس
|
||||
// فرض بر اینکه 0 یعنی غیرفعال یا پیشنویس
|
||||
$tour->status = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,538 @@
|
||||
-- phpMyAdmin SQL Dump
|
||||
-- version 5.2.3
|
||||
-- https://www.phpmyadmin.net/
|
||||
--
|
||||
-- Host: 127.0.0.1:3308
|
||||
-- Generation Time: Aug 22, 2026 at 07:47 AM
|
||||
-- Server version: 8.4.7
|
||||
-- PHP Version: 8.3.28
|
||||
|
||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||
START TRANSACTION;
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
|
||||
--
|
||||
-- Database: `airline_agency`
|
||||
--
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `admins`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `admins`;
|
||||
CREATE TABLE IF NOT EXISTS `admins` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`full_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`email` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`mobile` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`status` tinyint UNSIGNED NOT NULL DEFAULT '1' COMMENT '0:disable 1:enable',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `admins`
|
||||
--
|
||||
|
||||
INSERT INTO `admins` (`id`, `full_name`, `username`, `email`, `mobile`, `password`, `status`, `created_at`, `updated_at`) VALUES
|
||||
(2, 'شهرزاد زندی', 'shahrzad', 'shahrzad.zandi@gmail.com', '09359359350', '$2y$12$KpHLJK1kIz/TxVUOn4FV7udVA3xGLLDtEknPZyfh13Z2WPkRmHwni', 1, '2026-08-17 07:24:19', '2026-08-17 07:24:19'),
|
||||
(3, 'مدیر سیستم', 'admin', 'admin@gmail.com', '09123456789', '$2y$12$ElsUA1CqyK6euG6adWhXRuayR/Jzcq1zH28eoN3ypfeVrmTIr/zAe', 1, '2026-08-17 07:44:25', '2026-08-17 09:12:14');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `admin_permission`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `admin_permission`;
|
||||
CREATE TABLE IF NOT EXISTS `admin_permission` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`admin_id` bigint UNSIGNED NOT NULL,
|
||||
`permission_id` bigint UNSIGNED NOT NULL,
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_admin_permission` (`permission_id`),
|
||||
KEY `fk2_admin_permission` (`admin_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `airports`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `airports`;
|
||||
CREATE TABLE IF NOT EXISTS `airports` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`city` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`code` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `airports`
|
||||
--
|
||||
|
||||
INSERT INTO `airports` (`id`, `name`, `city`, `province`, `code`, `created_at`, `updated_at`) VALUES
|
||||
(1, 'فرودگاه بینالمللی اهواز', 'اهواز', 'خوزستان', 'AWZ', '0000-00-00 00:00:00', '0000-00-00 00:00:00');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `bookings`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `bookings`;
|
||||
CREATE TABLE IF NOT EXISTS `bookings` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint UNSIGNED NOT NULL,
|
||||
`tour_id` bigint UNSIGNED DEFAULT NULL,
|
||||
`flight_id` bigint UNSIGNED DEFAULT NULL,
|
||||
`booking_code` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`first_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`last_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`national_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`mobile` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`email` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`passengers` int UNSIGNED NOT NULL DEFAULT '1',
|
||||
`price` decimal(15,2) NOT NULL,
|
||||
`status` tinyint UNSIGNED NOT NULL DEFAULT '0',
|
||||
`payment_status` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`notes` text COLLATE utf8mb4_unicode_ci,
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_bookings` (`user_id`),
|
||||
KEY `fk2_bookings` (`tour_id`),
|
||||
KEY `fk3_bookings` (`flight_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `cities`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `cities`;
|
||||
CREATE TABLE IF NOT EXISTS `cities` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`province_id` bigint UNSIGNED NOT NULL,
|
||||
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_cities` (`province_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `cities`
|
||||
--
|
||||
|
||||
INSERT INTO `cities` (`id`, `province_id`, `name`, `created_at`, `updated_at`) VALUES
|
||||
(7, 2, 'ساری', NULL, NULL),
|
||||
(8, 1, 'تهران', NULL, NULL),
|
||||
(9, 5, 'شیراز', NULL, NULL),
|
||||
(10, 4, 'اصفهان', NULL, NULL),
|
||||
(11, 1, 'ری', NULL, NULL),
|
||||
(12, 2, 'آمل', NULL, NULL),
|
||||
(13, 9, 'کرمان', '2026-08-22 04:57:54', '2026-08-22 04:57:54');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `comments`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `comments`;
|
||||
CREATE TABLE IF NOT EXISTS `comments` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint UNSIGNED NOT NULL,
|
||||
`commentable_id` bigint UNSIGNED NOT NULL,
|
||||
`commentable_type` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`body` text COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`status` tinyint UNSIGNED NOT NULL DEFAULT '0',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_ comments` (`user_id`),
|
||||
KEY `fk2_ comments` (`commentable_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `comments`
|
||||
--
|
||||
|
||||
INSERT INTO `comments` (`id`, `user_id`, `commentable_id`, `commentable_type`, `body`, `status`, `created_at`, `updated_at`) VALUES
|
||||
(2, 1, 3, 'App\\Models\\Tour', 'بسیار خوب بود', 1, '2026-08-20 10:15:43', '2026-08-20 10:15:43'),
|
||||
(3, 1, 3, 'App\\Models\\Tour', 'خیلی هم عالی', 1, '2026-08-20 10:17:07', '2026-08-20 10:17:07'),
|
||||
(4, 1, 3, 'App\\Models\\Tour', 'من این تور را پسندیدم.', 1, '2026-08-20 13:15:04', '2026-08-20 13:15:04'),
|
||||
(5, 1, 6, 'App\\Models\\Tour', 'بسیار سفر خوبی بود با این تور', 1, '2026-08-22 06:47:37', '2026-08-22 06:47:37');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `favorites`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `favorites`;
|
||||
CREATE TABLE IF NOT EXISTS `favorites` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint UNSIGNED NOT NULL,
|
||||
`favoritable_id` bigint UNSIGNED NOT NULL,
|
||||
`favoritable_type` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_favorites` (`user_id`),
|
||||
KEY `fk2_favorites` (`favoritable_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `favorites`
|
||||
--
|
||||
|
||||
INSERT INTO `favorites` (`id`, `user_id`, `favoritable_id`, `favoritable_type`, `created_at`, `updated_at`) VALUES
|
||||
(3, 1, 3, 'App\\Models\\Tour', '2026-08-19 16:05:52', '2026-08-19 16:05:52'),
|
||||
(6, 1, 6, 'App\\Models\\Tour', '2026-08-22 06:39:47', '2026-08-22 06:39:47'),
|
||||
(7, 1, 8, 'App\\Models\\Tour', '2026-08-22 06:48:01', '2026-08-22 06:48:01'),
|
||||
(8, 1, 5, 'App\\Models\\Tour', '2026-08-22 07:37:20', '2026-08-22 07:37:20');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `files`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `files`;
|
||||
CREATE TABLE IF NOT EXISTS `files` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`fileable_id` bigint DEFAULT NULL,
|
||||
`fileable_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`extension` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`size` bigint UNSIGNED NOT NULL,
|
||||
`original_name` varchar(350) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`path` varchar(300) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `flights`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `flights`;
|
||||
CREATE TABLE IF NOT EXISTS `flights` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`travel_type_id` bigint UNSIGNED NOT NULL,
|
||||
`flight_number` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`airline_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`origin` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`destination` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`departure_date` date NOT NULL,
|
||||
`departure_time` time NOT NULL,
|
||||
`arrival_date` date NOT NULL,
|
||||
`arrival_time` time NOT NULL,
|
||||
`duration` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`price` decimal(12,2) NOT NULL,
|
||||
`capacity` int UNSIGNED NOT NULL,
|
||||
`status` tinyint NOT NULL DEFAULT '1',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `flights`
|
||||
--
|
||||
|
||||
INSERT INTO `flights` (`id`, `travel_type_id`, `flight_number`, `airline_name`, `origin`, `destination`, `departure_date`, `departure_time`, `arrival_date`, `arrival_time`, `duration`, `price`, `capacity`, `status`, `created_at`, `updated_at`) VALUES
|
||||
(1, 2, 'IR-725', 'ایران ایر', 'تهران', 'مشهد', '1405-06-03', '14:30:00', '1405-06-03', '16:00:00', '1 ساعت و 30 دقیقه', 2500000.00, 180, 0, '2026-08-17 13:52:44', '2026-08-17 13:56:00'),
|
||||
(2, 3, 'TK-182', 'ترکیش ایرلاینز', 'تهران', 'استانبول', '2026-08-28', '20:00:00', '2026-08-29', '07:31:00', '11 ساعت و 31', 18500000.00, 220, 1, '2026-08-17 14:01:19', '2026-08-17 14:01:19'),
|
||||
(3, 4, 'CH-401', 'وارش', 'تهران', 'کیش', '2026-09-01', '10:30:00', '2026-09-01', '20:33:00', '10 ساعت و3 دقیقه', 4200000.00, 160, 1, '2026-08-17 14:04:34', '2026-08-17 14:04:34'),
|
||||
(4, 2, 'ia33', 'test', 'test', 'test', '1405-05-06', '20:12:00', '1405-05-06', '22:06:00', '2', 850000.00, 2, 1, '2026-08-19 13:38:25', '2026-08-19 13:38:25');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `payments`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `payments`;
|
||||
CREATE TABLE IF NOT EXISTS `payments` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint UNSIGNED NOT NULL,
|
||||
`payable_id` bigint UNSIGNED NOT NULL,
|
||||
`amount` decimal(12,2) NOT NULL,
|
||||
`authority` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`transaction_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`status` tinyint NOT NULL COMMENT 'pending:0 | success:1| failed:2 | canceled:3',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `permissions`;
|
||||
CREATE TABLE IF NOT EXISTS `permissions` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `slug` (`slug`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `provinces`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `provinces`;
|
||||
CREATE TABLE IF NOT EXISTS `provinces` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `provinces`
|
||||
--
|
||||
|
||||
INSERT INTO `provinces` (`id`, `name`, `created_at`, `updated_at`) VALUES
|
||||
(1, 'تهران', NULL, NULL),
|
||||
(2, 'مازندران', NULL, NULL),
|
||||
(3, 'گیلان', NULL, NULL),
|
||||
(4, 'اصفهان', NULL, NULL),
|
||||
(5, 'فارس', NULL, NULL),
|
||||
(6, 'یزد', NULL, NULL),
|
||||
(7, 'آذربایجان غربی', NULL, NULL),
|
||||
(8, 'آذربایجان شرقی', NULL, NULL),
|
||||
(9, 'کرمان', '2026-08-22 04:57:33', '2026-08-22 04:57:33');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `settings`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `settings`;
|
||||
CREATE TABLE IF NOT EXISTS `settings` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`code` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`value` text COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `tours`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `tours`;
|
||||
CREATE TABLE IF NOT EXISTS `tours` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`travel_type_id` bigint UNSIGNED DEFAULT NULL,
|
||||
`title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`slug` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`image` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`duration` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`start_date` date DEFAULT NULL,
|
||||
`end_date` date DEFAULT NULL,
|
||||
`price` decimal(12,2) NOT NULL,
|
||||
`capacity` int UNSIGNED DEFAULT NULL,
|
||||
`views_count` int NOT NULL,
|
||||
`status` tinyint UNSIGNED NOT NULL DEFAULT '1',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_tours` (`travel_type_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `tours`
|
||||
--
|
||||
|
||||
INSERT INTO `tours` (`id`, `travel_type_id`, `title`, `slug`, `image`, `description`, `duration`, `start_date`, `end_date`, `price`, `capacity`, `views_count`, `status`, `created_at`, `updated_at`) VALUES
|
||||
(3, NULL, 'تور سهروزه اصفهان با راهنمای تخصصی', 'tor-shrozh-asfhan-ba-rahnmay-tkhssy', 'tours/1787037667.tour-image56011.jpg', NULL, NULL, NULL, NULL, 2850000.00, NULL, 80, 1, '2026-08-18 07:21:07', '2026-08-22 06:35:20'),
|
||||
(4, NULL, 'تور لوکس پنجروزه کیش با پرواز مستقیم', 'tor-loks-pngrozh-kysh-ba-proaz-mstkym', 'tours/1787037718.tour-image49479.jpg', NULL, NULL, NULL, NULL, 12500000.00, NULL, 41, 1, '2026-08-18 07:21:58', '2026-08-21 15:21:22'),
|
||||
(5, NULL, 'تور خانوادگی پنجروزه قشم و هرمز', 'tor-khanoadgy-pngrozh-kshm-o-hrmz', 'tours/1787138709.tour-image35820.jpg', NULL, NULL, NULL, NULL, 9750000.00, NULL, 4, 1, '2026-08-19 11:25:09', '2026-08-22 07:37:20'),
|
||||
(6, NULL, 'تور ششروزه رم و فلورانس', 'tor-shshrozh-rm-o-florans', 'tours/1787138776.tour-image35964.jpg', NULL, NULL, NULL, NULL, 76500000.00, NULL, 5, 1, '2026-08-19 11:26:16', '2026-08-22 06:47:38'),
|
||||
(7, NULL, 'تور لوکس هفتروزه پاریس', 'tor-loks-hftrozh-parys', 'tours/1787138834.tour-image66216.jpg', NULL, NULL, NULL, NULL, 89000000.00, NULL, 0, 0, '2026-08-19 11:27:14', '2026-08-22 05:54:45'),
|
||||
(8, NULL, 'تور اقتصادی چهارروزه باکو', 'tor-aktsady-chharrozh-bako', 'tours/1787138868.tour-image42665.jpg', NULL, NULL, NULL, NULL, 15800000.00, NULL, 2, 1, '2026-08-19 11:27:48', '2026-08-22 06:48:01'),
|
||||
(9, NULL, 'test', 'test', 'tours/1787146812.tour-image88373.jpg', NULL, NULL, NULL, NULL, 2000000.00, NULL, 0, 0, '2026-08-19 13:40:12', '2026-08-22 05:55:01');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `tour_flights`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `tour_flights`;
|
||||
CREATE TABLE IF NOT EXISTS `tour_flights` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`tour_id` bigint UNSIGNED NOT NULL,
|
||||
`flight_id` bigint UNSIGNED NOT NULL,
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `fk1_tour_flights` (`flight_id`),
|
||||
KEY `fk2_tour_flights` (`tour_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `travel_types`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `travel_types`;
|
||||
CREATE TABLE IF NOT EXISTS `travel_types` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`slug` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`status` tinyint UNSIGNED NOT NULL DEFAULT '1',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `slug` (`slug`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `travel_types`
|
||||
--
|
||||
|
||||
INSERT INTO `travel_types` (`id`, `title`, `slug`, `status`, `created_at`, `updated_at`) VALUES
|
||||
(2, 'تور داخلی', 'domestic-tour', 1, '2026-08-17 11:36:22', '2026-08-17 11:36:22'),
|
||||
(3, 'تور خارجی', 'international-tour', 1, '2026-08-17 11:46:33', '2026-08-17 11:46:33'),
|
||||
(4, 'تور چارتر', 'charter-tour', 1, '2026-08-17 11:46:59', '2026-08-17 11:46:59'),
|
||||
(5, 'تور ترکیبی', 'combined-tour', 1, '2026-08-17 11:47:41', '2026-08-17 11:47:41'),
|
||||
(6, 'پرواز خارجی', 'international-flight', 1, '2026-08-17 11:48:19', '2026-08-17 11:48:19'),
|
||||
(7, 'پرواز داخلی', 'domestic-flight', 1, '2026-08-17 11:48:44', '2026-08-17 11:48:44'),
|
||||
(8, 'تور لحظه آخری', 'last-minute', 1, '2026-08-17 11:49:11', '2026-08-17 11:49:11'),
|
||||
(9, 'پیشنویس نمونه', 'draft-sample', 0, '2026-08-17 11:49:33', '2026-08-17 11:56:13');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `users`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `users`;
|
||||
CREATE TABLE IF NOT EXISTS `users` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`first_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`last_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`email` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`mobile` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`national_code` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`birth_date` date DEFAULT NULL,
|
||||
`gender` tinyint(1) NOT NULL COMMENT '1:Male | 2:Female',
|
||||
`marital_status` tinyint(1) NOT NULL COMMENT '1:Single | 2:Married | 3:Divorced/Separated',
|
||||
`spouse_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`image` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`province_id` bigint UNSIGNED NOT NULL,
|
||||
`city_id` bigint UNSIGNED DEFAULT NULL,
|
||||
`status` tinyint UNSIGNED NOT NULL DEFAULT '1',
|
||||
`created_at` timestamp NOT NULL,
|
||||
`updated_at` timestamp NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `users`
|
||||
--
|
||||
|
||||
INSERT INTO `users` (`id`, `first_name`, `last_name`, `email`, `mobile`, `password`, `national_code`, `birth_date`, `gender`, `marital_status`, `spouse_name`, `image`, `username`, `province_id`, `city_id`, `status`, `created_at`, `updated_at`) VALUES
|
||||
(1, 'شهرزاد', 'زندی', 'shahrzad2020@gmail.com', '09118909120', '$2y$12$exJ7bGMeL8lsMJvdJXYhl.pDRg2tT7tRr.cVstjx0rbQuw04dWgNC', '2080706640', NULL, 2, 1, NULL, 'avatars/FevHjQ0JjviBzlNOGXiI0k1JmshmUIxrDXF3xBAC.jpg', 'shahrzad011', 2, NULL, 1, '2026-08-19 01:09:30', '2026-08-22 06:48:45'),
|
||||
(2, 'حاتمه', 'اندرزا', 'hatame19@gmail.com', '09119533286', '$2y$12$6AxXNTIpJAK0czNU78PeAObgC.Nl0dTbqKyyMHSGTUrr0GynKyfhq', '2081391693', NULL, 2, 1, NULL, 'users/MU5t6XmUmS558EO4EPQUdO2kDL7XSeDEtoeP83LD.jpg', 'hatame19', 2, NULL, 1, '2026-08-19 06:23:09', '2026-08-19 06:23:09');
|
||||
|
||||
--
|
||||
-- Constraints for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- Constraints for table `admin_permission`
|
||||
--
|
||||
ALTER TABLE `admin_permission`
|
||||
ADD CONSTRAINT `fk1_admin_permission` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
ADD CONSTRAINT `fk2_admin_permission` FOREIGN KEY (`admin_id`) REFERENCES `admins` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
--
|
||||
-- Constraints for table `bookings`
|
||||
--
|
||||
ALTER TABLE `bookings`
|
||||
ADD CONSTRAINT `fk1_bookings` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
ADD CONSTRAINT `fk2_bookings` FOREIGN KEY (`tour_id`) REFERENCES `tours` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
ADD CONSTRAINT `fk3_bookings` FOREIGN KEY (`flight_id`) REFERENCES `flights` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
--
|
||||
-- Constraints for table `cities`
|
||||
--
|
||||
ALTER TABLE `cities`
|
||||
ADD CONSTRAINT `fk1_cities` FOREIGN KEY (`province_id`) REFERENCES `provinces` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
--
|
||||
-- Constraints for table `comments`
|
||||
--
|
||||
ALTER TABLE `comments`
|
||||
ADD CONSTRAINT `fk1_ comments` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
--
|
||||
-- Constraints for table `favorites`
|
||||
--
|
||||
ALTER TABLE `favorites`
|
||||
ADD CONSTRAINT `fk1_favorites` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
--
|
||||
-- Constraints for table `tours`
|
||||
--
|
||||
ALTER TABLE `tours`
|
||||
ADD CONSTRAINT `fk1_tours` FOREIGN KEY (`travel_type_id`) REFERENCES `travel_types` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
|
||||
--
|
||||
-- Constraints for table `tour_flights`
|
||||
--
|
||||
ALTER TABLE `tour_flights`
|
||||
ADD CONSTRAINT `fk1_tour_flights` FOREIGN KEY (`flight_id`) REFERENCES `flights` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
||||
ADD CONSTRAINT `fk2_tour_flights` FOREIGN KEY (`tour_id`) REFERENCES `tours` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
|
||||
COMMIT;
|
||||
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
+132
-560
@@ -1,606 +1,178 @@
|
||||
/* =========================================================
|
||||
Travel Agency - Home Page
|
||||
تایپوگرافی و تنظیمات پایه (یکپارچه)
|
||||
========================================================= */
|
||||
|
||||
.travel-page {
|
||||
background: #f6f8fb;
|
||||
min-height: 100vh;
|
||||
padding: 60px 0;
|
||||
direction: rtl;
|
||||
body, html {
|
||||
font-family: 'Tahoma', 'Arial', sans-serif !important;
|
||||
/*font-size: 13px !important; !* متن اصلی خواناتر *!*/
|
||||
line-height: 1.8 !important;
|
||||
color: #374151 !important;
|
||||
/*background: #f5f7fa;*/
|
||||
}
|
||||
|
||||
.travel-page .section-heading {
|
||||
text-align: center;
|
||||
margin-bottom: 35px;
|
||||
h1, h2, h3, h4, h5 {
|
||||
font-family: 'Tahoma', sans-serif !important;
|
||||
color: #1f2937 !important;
|
||||
}
|
||||
|
||||
.travel-page .section-heading h2 {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: #1f2937;
|
||||
margin-bottom: 10px;
|
||||
/* اصلاح فرمها */
|
||||
.form-control, input, select, textarea {
|
||||
font-size: 12px !important;
|
||||
padding: 10px 14px !important;
|
||||
}
|
||||
|
||||
.travel-page .section-heading p {
|
||||
color: #7b8494;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
/* =========================================================
|
||||
Tour Cards
|
||||
استایلهای کارتها (مشترک بین همه صفحات)
|
||||
========================================================= */
|
||||
|
||||
.travel-page .travel-card {
|
||||
background: #fff;
|
||||
border-radius: 14px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #edf0f4;
|
||||
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.06);
|
||||
transition: all .25s ease;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.travel-page .travel-card:hover {
|
||||
transform: translateY(-6px);
|
||||
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.10);
|
||||
}
|
||||
|
||||
|
||||
/* تصویر کارت */
|
||||
|
||||
.travel-page .travel-card-image {
|
||||
width: 100%;
|
||||
height: 210px;
|
||||
overflow: hidden;
|
||||
background: #eef1f5;
|
||||
}
|
||||
|
||||
.travel-page .travel-card-image img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
object-fit: cover;
|
||||
transition: transform .35s ease;
|
||||
}
|
||||
|
||||
.travel-page .travel-card:hover .travel-card-image img {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
|
||||
/* بدنه کارت */
|
||||
|
||||
.travel-page .travel-card-body {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.travel-page .travel-card-title {
|
||||
font-size: 19px;
|
||||
font-weight: 700;
|
||||
color: #202936;
|
||||
margin: 0 0 12px;
|
||||
}
|
||||
|
||||
.travel-page .travel-card-summary {
|
||||
color: #737d8d;
|
||||
font-size: 14px;
|
||||
line-height: 1.9;
|
||||
min-height: 52px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.travel-page .travel-date {
|
||||
color: #555f70;
|
||||
font-size: 13px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.travel-page .travel-date i {
|
||||
margin-left: 6px;
|
||||
color: #1687d9;
|
||||
}
|
||||
|
||||
|
||||
/* =========================================================
|
||||
Buttons
|
||||
========================================================= */
|
||||
|
||||
.travel-page .travel-btn {
|
||||
display: block;
|
||||
text-align: center;
|
||||
text-decoration: none !important;
|
||||
background: #1687d9;
|
||||
color: #fff !important;
|
||||
border-radius: 8px;
|
||||
padding: 10px 15px;
|
||||
font-size: 14px;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
.travel-page .travel-btn:hover {
|
||||
background: #0d6fae;
|
||||
}
|
||||
|
||||
|
||||
/* =========================================================
|
||||
Empty State
|
||||
========================================================= */
|
||||
|
||||
.travel-page .empty-box {
|
||||
background: #fff;
|
||||
border: 1px dashed #d9dee7;
|
||||
border-radius: 12px;
|
||||
padding: 35px;
|
||||
text-align: center;
|
||||
color: #8a93a1;
|
||||
}
|
||||
|
||||
|
||||
/* =========================================================
|
||||
Pagination
|
||||
========================================================= */
|
||||
|
||||
.travel-page .pagination-wrapper {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 30px;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.travel-page .pagination-wrapper nav {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
/* =========================================================
|
||||
Flights
|
||||
========================================================= */
|
||||
|
||||
.travel-page .flights-section {
|
||||
margin-top: 80px;
|
||||
}
|
||||
|
||||
.travel-page .flight-card {
|
||||
background: #fff;
|
||||
border-radius: 14px;
|
||||
border: 1px solid #edf0f4;
|
||||
padding: 22px;
|
||||
height: 100%;
|
||||
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.05);
|
||||
transition: all .25s ease;
|
||||
}
|
||||
|
||||
.travel-page .flight-card:hover {
|
||||
transform: translateY(-5px);
|
||||
box-shadow: 0 14px 30px rgba(0, 0, 0, 0.09);
|
||||
}
|
||||
|
||||
.travel-page .flight-icon {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
background: #e9f5ff;
|
||||
color: #1687d9;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 21px;
|
||||
margin-bottom: 17px;
|
||||
}
|
||||
|
||||
.travel-page .flight-title {
|
||||
font-size: 19px;
|
||||
font-weight: 700;
|
||||
color: #202936;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.travel-page .flight-summary {
|
||||
color: #737d8d;
|
||||
font-size: 14px;
|
||||
line-height: 1.9;
|
||||
min-height: 52px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.travel-page .flight-date {
|
||||
color: #555f70;
|
||||
font-size: 13px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
|
||||
/* =========================================================
|
||||
Responsive
|
||||
========================================================= */
|
||||
|
||||
@media (max-width: 767px) {
|
||||
|
||||
.travel-page {
|
||||
padding: 35px 15px;
|
||||
}
|
||||
|
||||
.travel-page .section-heading h2 {
|
||||
font-size: 23px;
|
||||
}
|
||||
|
||||
.travel-page .travel-card-image {
|
||||
height: 190px;
|
||||
}
|
||||
|
||||
.travel-page .flights-section {
|
||||
margin-top: 55px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
.tour-details-page {
|
||||
direction: rtl;
|
||||
padding: 50px 0;
|
||||
background: #f7f8fa;
|
||||
}
|
||||
|
||||
.tour-details-card {
|
||||
max-width: 1050px;
|
||||
margin: auto;
|
||||
.travel-card, .flight-card, .tour-card, .tour-details-card {
|
||||
background: #fff;
|
||||
border-radius: 16px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
|
||||
border: 1px solid #eef0f5;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
|
||||
.travel-card:hover, .flight-card:hover, .tour-details-card:hover {
|
||||
box-shadow: 0 10px 25px rgba(20, 50, 90, .10);
|
||||
}
|
||||
|
||||
/* دکمههای اصلی */
|
||||
.travel-btn {
|
||||
display: inline-block;
|
||||
background: #1687d9;
|
||||
color: #fff !important;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
padding: 10px 20px;
|
||||
border-radius: 8px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.travel-btn:hover { background: #0e6bb0; }
|
||||
|
||||
/* دکمه علاقهمندی */
|
||||
.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: 12px;
|
||||
cursor: pointer;
|
||||
transition: all .2s ease;
|
||||
}
|
||||
.travel-favorite-btn:hover, .travel-favorite-btn.active {
|
||||
background: #e0245e;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* =========================================================
|
||||
بخش اختصاصی جزئیات تور (tour-details-page)
|
||||
========================================================= */
|
||||
.tour-details-page { padding: 30px 0; }
|
||||
|
||||
.tour-details-card { padding: 30px; margin-bottom: 30px; }
|
||||
|
||||
.tour-details-image {
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
height: 350px;
|
||||
overflow: hidden;
|
||||
border-radius: 12px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.tour-details-image img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tour-no-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #eeeeee;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.tour-details-content {
|
||||
padding: 35px;
|
||||
}
|
||||
|
||||
.tour-details-title {
|
||||
margin: 0 0 25px;
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
color: #222;
|
||||
}
|
||||
.tour-details-image img { width: 100%; height: 100%; object-fit: cover; }
|
||||
|
||||
.tour-details-info {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
||||
gap: 15px;
|
||||
margin-bottom: 35px;
|
||||
margin: 25px 0;
|
||||
}
|
||||
|
||||
.tour-info-box {
|
||||
padding: 20px;
|
||||
background: #f7f8fa;
|
||||
border-radius: 12px;
|
||||
background: #f8fafc;
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
text-align: center;
|
||||
border: 1px solid #eef0f5;
|
||||
}
|
||||
|
||||
.tour-info-label {
|
||||
display: block;
|
||||
color: #888;
|
||||
font-size: 13px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.tour-info-box strong {
|
||||
color: #222;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.tour-description {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 30px;
|
||||
}
|
||||
|
||||
.tour-description h2,
|
||||
.tour-flights h2,
|
||||
.related-tours h2 {
|
||||
margin-bottom: 20px;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.tour-description p {
|
||||
color: #555;
|
||||
line-height: 2.2;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.tour-flights {
|
||||
margin-top: 35px;
|
||||
padding-top: 30px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.flight-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 20px;
|
||||
padding: 18px;
|
||||
margin-bottom: 10px;
|
||||
background: #f7f8fa;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.flight-item span {
|
||||
display: block;
|
||||
color: #888;
|
||||
font-size: 13px;
|
||||
font-size: 12px;
|
||||
color: #8a93a3;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.related-tours {
|
||||
margin-top: 40px;
|
||||
padding-top: 30px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.related-tours-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.related-tour-card {
|
||||
.tour-info-box strong {
|
||||
font-size: 13px;
|
||||
color: #1f2937;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
background: #f7f8fa;
|
||||
}
|
||||
|
||||
.tour-flights .flight-item {
|
||||
background: #f8fafc;
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.related-tour-card img {
|
||||
width: 100%;
|
||||
height: 130px;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.related-tour-card div {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.related-tour-card h3 {
|
||||
margin: 0 0 8px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.related-tour-card span {
|
||||
color: #888;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.tour-back {
|
||||
margin-top: 35px;
|
||||
}
|
||||
|
||||
.tour-back-button {
|
||||
display: inline-block;
|
||||
padding: 12px 25px;
|
||||
background: #222;
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.tour-back-button:hover {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
opacity: .9;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
|
||||
.tour-details-page {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
|
||||
.tour-details-image {
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
.tour-details-content {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.tour-details-title {
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.tour-details-info {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.related-tours-grid {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.flight-item {
|
||||
flex-direction: column;
|
||||
}
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
/* =========================================================
|
||||
Main Navbar - RTL Fix
|
||||
========================================================= */
|
||||
|
||||
#main-nav {
|
||||
direction: rtl;
|
||||
width: 100%;
|
||||
عنوان بخشها (Global Header Style)
|
||||
========================================================= */
|
||||
h2 {
|
||||
font-size: 15px !important;
|
||||
font-weight: 500 !important;
|
||||
padding-right: 15px;
|
||||
position: relative;
|
||||
z-index: 1000;
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
#main-nav .container {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#main-nav .navbar-inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
/* لوگو */
|
||||
#main-nav .navbar-header {
|
||||
float: none;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
#main-nav .navbar-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 80px;
|
||||
padding: 10px 0 10px 30px;
|
||||
}
|
||||
|
||||
#main-nav .navbar-brand img {
|
||||
max-height: 55px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
/* بخش منو */
|
||||
#main-nav .navbar-collapse {
|
||||
display: flex !important;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex: 1;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
/* منوی اصلی */
|
||||
#main-nav .navbar-nav {
|
||||
float: none !important;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#main-nav .navbar-nav > li {
|
||||
float: none;
|
||||
}
|
||||
|
||||
#main-nav .navbar-nav > li > a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: 80px;
|
||||
padding: 0 16px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
|
||||
/* منوی سمت راست */
|
||||
#main-nav .navbar-nav.navbar-right {
|
||||
margin-right: auto;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
|
||||
/* آیکون حساب */
|
||||
#main-nav .navbar-nav-item-user-icon {
|
||||
margin-left: 7px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
|
||||
/* Dropdown */
|
||||
#main-nav .dropdown-menu {
|
||||
h2::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: auto;
|
||||
min-width: 180px;
|
||||
text-align: right;
|
||||
top: 2px;
|
||||
width: 5px;
|
||||
height: 24px;
|
||||
/*background: #1687d9;*/
|
||||
border-radius: 4px;
|
||||
}
|
||||
/* =========================================================
|
||||
حفظ رنگ سفید در هیرو (travel-hero)
|
||||
این قانون باید بعد از قانون سراسری h1 قرار بگیرد
|
||||
========================================================= */
|
||||
|
||||
.travel-hero-content h1,
|
||||
.travel-hero-content h1 span {
|
||||
color: #ffffff !important;
|
||||
text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
#main-nav .navbar-right .dropdown-menu {
|
||||
right: auto;
|
||||
left: 0;
|
||||
/* متنهای دیگر هیرو هم سفید و خوانا */
|
||||
.travel-hero-label,
|
||||
.travel-hero-content p {
|
||||
color: #ffffff !important;
|
||||
text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
|
||||
/* موبایل */
|
||||
@media (max-width: 767px) {
|
||||
|
||||
#main-nav .navbar-inner {
|
||||
display: block;
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
#main-nav .navbar-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
min-height: 70px;
|
||||
}
|
||||
|
||||
#main-nav .navbar-brand {
|
||||
height: 70px;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
#main-nav .navbar-toggle {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
#main-nav .navbar-collapse {
|
||||
display: block !important;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#main-nav .navbar-nav {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#main-nav .navbar-nav > li {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#main-nav .navbar-nav > li > a {
|
||||
min-height: 45px;
|
||||
padding: 12px 15px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#main-nav .navbar-nav.navbar-right {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#main-nav .dropdown-menu {
|
||||
position: static;
|
||||
float: none;
|
||||
width: 100%;
|
||||
box-shadow: none;
|
||||
}
|
||||
.travel-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.travel-card-image img {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.travel-card-body {
|
||||
padding: 15px;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
|
||||
<div>
|
||||
<!-- Simplicity is the ultimate sophistication. - Leonardo da Vinci -->
|
||||
</div>
|
||||
@@ -1,3 +1,139 @@
|
||||
<div>
|
||||
<!-- An unexamined life is not worth living. - Socrates -->
|
||||
</div>
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'نظرات من')
|
||||
|
||||
@section('content')
|
||||
|
||||
{{-- =====================
|
||||
سربرگ صفحه (Page Header)
|
||||
===================== --}}
|
||||
<div class="account-page-header mb-4 d-flex justify-content-between align-items-center flex-wrap gap-3">
|
||||
<div>
|
||||
<h4 class="mb-1 fw-bold">
|
||||
<i class="fa fa-comments text-primary me-1"></i>
|
||||
نظرات من
|
||||
</h4>
|
||||
<p class="text-muted small mb-0">
|
||||
دیدگاههایی که برای تورها و پروازها ثبت کردهاید
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<a href="{{ route('tours.index') }}" class="btn btn-sm btn-outline-primary">
|
||||
<i class="fa fa-suitcase me-1"></i>
|
||||
مشاهده تورها
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- نمایش پیام موفقیت --}}
|
||||
@if (session('success'))
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
{{ session('success') }}
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="بستن"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- =====================
|
||||
لیست نظرات
|
||||
===================== --}}
|
||||
@forelse ($comments as $comment)
|
||||
|
||||
<div class="card shadow-sm app-comment-card mb-3 border-0 rounded-4">
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
{{-- بالای کارت: عنوان تور/پرواز + وضعیت --}}
|
||||
<div class="d-flex justify-content-between align-items-start flex-wrap gap-2 mb-2">
|
||||
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
|
||||
{{-- آیکون تور یا پرواز بر اساس نوع محتوا --}}
|
||||
@if ($comment->commentable instanceof \App\Models\Tour)
|
||||
<span class="app-icon-circle bg-primary-subtle text-primary">
|
||||
<i class="fa fa-suitcase"></i>
|
||||
</span>
|
||||
@else
|
||||
<span class="app-icon-circle bg-info-subtle text-info">
|
||||
<i class="fa fa-plane"></i>
|
||||
</span>
|
||||
@endif
|
||||
|
||||
<div>
|
||||
<h6 class="mb-0 fw-bold">
|
||||
{{ $comment->commentable?->title ?? 'مورد حذفشده' }}
|
||||
</h6>
|
||||
<small class="text-muted">
|
||||
{{ class_basename($comment->commentable_type) }}
|
||||
</small>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- وضعیت نظر --}}
|
||||
@include('admin.comments.status', ['status' => $comment->status])
|
||||
|
||||
</div>
|
||||
|
||||
{{-- متن نظر --}}
|
||||
<p class="card-text text-muted mb-0">
|
||||
{{ $comment->body }}
|
||||
</p>
|
||||
|
||||
{{-- تاریخ ثبت --}}
|
||||
<div class="d-flex justify-content-between align-items-center mt-3 pt-3 border-top small text-muted">
|
||||
<span>
|
||||
<i class="fa fa-calendar me-1"></i>
|
||||
{{ $comment->created_at->format('Y/m/d H:i') }}
|
||||
</span>
|
||||
|
||||
{{-- دکمه حذف نظر --}}
|
||||
@if (Route::has('account.comments.destroy'))
|
||||
<form action="{{ route('account.comments.destroy', $comment) }}" method="POST"
|
||||
onsubmit="return confirm('نظر شما حذف شود؟')">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-link btn-sm text-danger p-0">
|
||||
<i class="fa fa-trash me-1"></i>
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@empty
|
||||
|
||||
<div class="card border-0 shadow-sm rounded-4">
|
||||
<div class="card-body text-center py-5">
|
||||
|
||||
<div class="app-empty-icon mx-auto mb-3">
|
||||
<i class="fa fa-comment-slash"></i>
|
||||
</div>
|
||||
|
||||
<h5 class="fw-bold mb-1">هنوز نظری ثبت نکردهاید</h5>
|
||||
<p class="text-muted mb-3">
|
||||
بعد از خرید یا رزرو تور و پرواز، میتوانید نظر خود را ثبت کنید.
|
||||
</p>
|
||||
|
||||
<a href="{{ route('tours.index') }}" class="btn btn-primary">
|
||||
<i class="fa fa-suitcase me-1"></i>
|
||||
مشاهده تورها
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endforelse
|
||||
|
||||
|
||||
{{-- =====================
|
||||
صفحهبندی
|
||||
===================== --}}
|
||||
<div class="mt-4">
|
||||
{{ $comments->links() }}
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -1,3 +1,120 @@
|
||||
<div>
|
||||
<!-- If you do not have a consistent goal in life, you can not live it in a consistent way. - Marcus Aurelius -->
|
||||
</div>
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container py-5">
|
||||
<div class="row g-4">
|
||||
<!-- ====== سایدبار پروفایل ====== -->
|
||||
<div class="col-lg-3 col-md-4">
|
||||
<div class="profile-sidebar text-center">
|
||||
<img src="{{ $user->image ? asset('storage/'.$user->image) : asset('assets/img/default.png') }}"
|
||||
class="profile-avatar mb-3" alt="تصویر پروفایل">
|
||||
|
||||
<h5 class="profile-name">{{ $user->first_name }} {{ $user->last_name }}</h5>
|
||||
<p class="profile-username">@ {{ $user->username }}</p>
|
||||
|
||||
<hr class="my-3">
|
||||
<div class="d-flex justify-content-around small">
|
||||
<div><strong>{{ $user->favorites->count() }}</strong><br><span style="color:#6c757d;">علاقهمندی</span></div>
|
||||
<div><strong>{{ $user->comments->count() }}</strong><br><span style="color:#6c757d;">کامنت</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ====== محتوای اصلی ====== -->
|
||||
<div class="col-lg-9 col-md-8">
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
<li class="nav-item"><a class="nav-link active" data-toggle="tab" href="#edit">ویرایش پروفایل</a></li>
|
||||
<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#comments">کامنتهای من</a></li>
|
||||
<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#favorites">علاقهمندیها</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content pt-4">
|
||||
<!-- تب ویرایش پروفایل -->
|
||||
<div class="tab-pane active" id="edit">
|
||||
<div class="form-card">
|
||||
<form action="{{ route('account.edit-profile.post') }}" method="POST"
|
||||
enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label">نام</label>
|
||||
<input type="text" name="first_name" class="form-control"
|
||||
value="{{ old('first_name', $user->first_name) }}">
|
||||
@error('first_name') <small class="text-danger">{{ $message }}</small> @enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label">نام خانوادگی</label>
|
||||
<input type="text" name="last_name" class="form-control"
|
||||
value="{{ old('last_name', $user->last_name) }}">
|
||||
@error('last_name') <small class="text-danger">{{ $message }}</small> @enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label">نام کاربری</label>
|
||||
<input type="text" name="username" class="form-control"
|
||||
value="{{ old('username', $user->username) }}">
|
||||
@error('username') <small class="text-danger">{{ $message }}</small> @enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label">ایمیل</label>
|
||||
<input type="email" name="email" class="form-control"
|
||||
value="{{ old('email', $user->email) }}">
|
||||
@error('email') <small class="text-danger">{{ $message }}</small> @enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-3">
|
||||
<label class="form-label">تصویر پروفایل</label>
|
||||
<input type="file" name="image" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-4">
|
||||
<label class="form-label">رمز عبور جدید <small class="text-muted">(اختیاری)</small></label>
|
||||
<input type="password" name="password" class="form-control">
|
||||
@error('password') <small class="text-danger">{{ $message }}</small> @enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-save">ذخیره تغییرات</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- تب کامنتها -->
|
||||
<div class="tab-pane" id="comments">
|
||||
@forelse($user->comments as $comment)
|
||||
<div class="comment-box mb-3">
|
||||
<div>{{ $comment->content }}</div>
|
||||
<small>{{ $comment->created_at ? $comment->created_at->format('Y/m/d') : '' }}</small>
|
||||
</div>
|
||||
@empty
|
||||
<p class="text-muted">هنوز کامنتی ثبت نکردهاید.</p>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
<!-- تب علاقهمندیها -->
|
||||
<div class="tab-pane" id="favorites">
|
||||
@forelse($user->favorites as $fav)
|
||||
<span class="favorite-item">
|
||||
<i class="fa fa-heart"></i>
|
||||
{{ $fav->favoritable->title ?? 'مورد علاقهمند' }}
|
||||
</span>
|
||||
@empty
|
||||
<p class="text-muted">هنوز موردی به علاقهمندیها اضافه نکردهاید.</p>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('.nav-tabs a').click(function (e) {
|
||||
e.preventDefault();
|
||||
$(this).tab('show');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -26,14 +26,22 @@
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="card-footer bg-transparent border-0 d-flex justify-content-between">
|
||||
<a href="{{route('tours.index')}}" class="btn btn-sm btn-primary">مشاهده</a>
|
||||
<div
|
||||
class="card-footer bg-transparent border-0 d-flex justify-content-between align-items-center">
|
||||
@if($favorite->favoritable_type === \App\Models\Tour::class)
|
||||
<a href="{{ route('tours.show', $item->id) }}" class="btn btn-sm btn-primary">مشاهده
|
||||
تور</a>
|
||||
@endif
|
||||
|
||||
<form action="{{ route('favorites.toggle') }}" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="favoritable_type" value="{{ $favorite->favoritable_type }}">
|
||||
<input type="hidden" name="favoritable_type"
|
||||
value="{{ $favorite->favoritable_type }}">
|
||||
<input type="hidden" name="favoritable_id" value="{{ $favorite->favoritable_id }}">
|
||||
<button class="btn btn-sm btn-danger">حذف</button>
|
||||
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger">
|
||||
از علاقهمندیها حذف شود
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -345,99 +345,6 @@
|
||||
|
||||
</div>
|
||||
|
||||
{{-- <div class="col-xl-4">--}}
|
||||
|
||||
{{-- <div class="card custom-card">--}}
|
||||
|
||||
{{-- <div class="card-header">--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <div class="card-title mb-1">--}}
|
||||
{{-- سطح دسترسی--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <small class="text-muted">--}}
|
||||
{{-- دسترسیهای مدیر را مدیریت کنید.--}}
|
||||
{{-- </small>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div class="card-body">--}}
|
||||
|
||||
{{-- @php--}}
|
||||
|
||||
{{-- $selectedPermissions = old(--}}
|
||||
{{-- 'permissions',--}}
|
||||
{{-- $admin->permissions->pluck('id')->toArray()--}}
|
||||
{{-- );--}}
|
||||
|
||||
{{-- @endphp--}}
|
||||
|
||||
|
||||
{{-- @error('permissions')--}}
|
||||
|
||||
{{-- <div class="alert alert-danger py-2">--}}
|
||||
{{-- {{ $message }}--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @enderror--}}
|
||||
|
||||
|
||||
{{-- @forelse($permissions as $permission)--}}
|
||||
|
||||
{{-- <div class="form-check form-check-lg mb-3">--}}
|
||||
|
||||
{{-- <input class="form-check-input"--}}
|
||||
{{-- type="checkbox"--}}
|
||||
{{-- name="permissions[]"--}}
|
||||
{{-- value="{{ $permission->id }}"--}}
|
||||
{{-- id="permission_{{ $permission->id }}"--}}
|
||||
{{-- @checked(in_array(--}}
|
||||
{{-- $permission->id,--}}
|
||||
{{-- $selectedPermissions--}}
|
||||
{{-- ))>--}}
|
||||
|
||||
{{-- <label class="form-check-label"--}}
|
||||
{{-- for="permission_{{ $permission->id }}">--}}
|
||||
|
||||
{{-- <span class="fw-semibold">--}}
|
||||
{{-- {{ $permission->name }}--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @if($permission->description)--}}
|
||||
|
||||
{{-- <small class="text-muted d-block mt-1">--}}
|
||||
{{-- {{ $permission->description }}--}}
|
||||
{{-- </small>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </label>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <div class="text-center text-muted py-4">--}}
|
||||
|
||||
{{-- <i class="ri-shield-keyhole-line fs-2 d-block mb-2"></i>--}}
|
||||
|
||||
{{-- هنوز دسترسیای تعریف نشده است.--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -120,19 +120,12 @@
|
||||
@else
|
||||
|
||||
<span class="text-muted">
|
||||
بدون دسترسی
|
||||
</span>
|
||||
بدون دسترسی
|
||||
</span>
|
||||
|
||||
@endif
|
||||
|
||||
</td>
|
||||
{{-- <td style="min-width: 200px; max-width: 280px; white-space: normal;">--}}
|
||||
{{-- @forelse($admin->permissions as $permission)--}}
|
||||
{{-- <span class="badge bg-primary-subtle text-primary mb-1">{{ $permission->name }}</span>--}}
|
||||
{{-- @empty--}}
|
||||
{{-- <span class="text-muted fs-12">بدون دسترسی</span>--}}
|
||||
{{-- @endforelse--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- وضعیت --}}
|
||||
<td>
|
||||
@@ -204,720 +197,3 @@
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
{{--@extends('admin.layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'مدیریت مدیران')--}}
|
||||
|
||||
{{--@section('breadcrumb')--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <h1 class="page-title fw-medium fs-18 mb-2">--}}
|
||||
{{-- مدیریت مدیران--}}
|
||||
{{-- </h1>--}}
|
||||
|
||||
{{-- <nav>--}}
|
||||
|
||||
{{-- <ol class="breadcrumb mb-0">--}}
|
||||
|
||||
{{-- <li class="breadcrumb-item">--}}
|
||||
|
||||
{{-- <a href="{{ route('admin.dashboard.index') }}">--}}
|
||||
{{-- داشبورد--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- <li class="breadcrumb-item active">--}}
|
||||
{{-- مدیریت مدیران--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- </ol>--}}
|
||||
|
||||
{{-- </nav>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
|
||||
{{--@section('content')--}}
|
||||
|
||||
{{-- <div class="container-fluid pt-4">--}}
|
||||
|
||||
{{-- --}}{{-- پیام موفقیت --}}
|
||||
{{-- @if(session('success'))--}}
|
||||
|
||||
{{-- <div class="alert alert-success alert-dismissible fade show" role="alert">--}}
|
||||
|
||||
{{-- <i class="ri-checkbox-circle-line me-1"></i>--}}
|
||||
|
||||
{{-- {{ session('success') }}--}}
|
||||
|
||||
{{-- <button type="button"--}}
|
||||
{{-- class="btn-close"--}}
|
||||
{{-- data-bs-dismiss="alert"--}}
|
||||
{{-- aria-label="Close">--}}
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- خطاهای عمومی --}}
|
||||
{{-- @if(session('error'))--}}
|
||||
|
||||
{{-- <div class="alert alert-danger alert-dismissible fade show" role="alert">--}}
|
||||
|
||||
{{-- <i class="ri-error-warning-line me-1"></i>--}}
|
||||
|
||||
{{-- {{ session('error') }}--}}
|
||||
|
||||
{{-- <button type="button"--}}
|
||||
{{-- class="btn-close"--}}
|
||||
{{-- data-bs-dismiss="alert"--}}
|
||||
{{-- aria-label="Close">--}}
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- عنوان و عملیات --}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
|
||||
{{-- <div class="card custom-card">--}}
|
||||
|
||||
{{-- <div class="card-body p-3">--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center justify-content-between flex-wrap gap-3">--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <h5 class="mb-1">--}}
|
||||
{{-- لیست مدیران--}}
|
||||
{{-- </h5>--}}
|
||||
|
||||
{{-- <p class="text-muted mb-0 fs-12">--}}
|
||||
{{-- مدیریت مدیران و سطح دسترسی پنل--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <a href="{{ route('admin.admins.create') }}"--}}
|
||||
{{-- class="btn btn-primary">--}}
|
||||
|
||||
{{-- <i class="ri-add-line me-1"></i>--}}
|
||||
|
||||
{{-- ایجاد مدیر جدید--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- جدول مدیران --}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
|
||||
{{-- <div class="card custom-card">--}}
|
||||
|
||||
{{-- <div class="table-responsive">--}}
|
||||
|
||||
{{-- <table class="table text-nowrap table-hover table-bordered mb-0">--}}
|
||||
|
||||
{{-- <thead>--}}
|
||||
|
||||
{{-- <tr>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- #--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- مدیر--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- نام کاربری--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- اطلاعات تماس--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- دسترسیها--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- وضعیت--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- تاریخ ایجاد--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- عملیات--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- </tr>--}}
|
||||
|
||||
{{-- </thead>--}}
|
||||
|
||||
|
||||
{{-- <tbody>--}}
|
||||
|
||||
{{-- @forelse($admins as $admin)--}}
|
||||
|
||||
{{-- <tr>--}}
|
||||
|
||||
{{-- --}}{{-- ID --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
{{-- {{ $admin->id }}--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- نام مدیر --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center">--}}
|
||||
|
||||
{{-- <div class="avatar avatar-sm bg-primary-transparent me-2">--}}
|
||||
|
||||
{{-- <i class="ri-user-settings-line"></i>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <div class="fw-semibold">--}}
|
||||
{{-- {{ $admin->full_name }}--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <small class="text-muted">--}}
|
||||
{{-- مدیر پنل--}}
|
||||
{{-- </small>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- username --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <span class="badge bg-light text-dark">--}}
|
||||
|
||||
{{-- <i class="ri-user-line me-1"></i>--}}
|
||||
|
||||
{{-- {{ $admin->username }}--}}
|
||||
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- اطلاعات تماس --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <i class="ri-mail-line text-muted me-1"></i>--}}
|
||||
|
||||
{{-- {{ $admin->email }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="mt-1">--}}
|
||||
|
||||
{{-- <i class="ri-smartphone-line text-muted me-1"></i>--}}
|
||||
|
||||
{{-- {{ $admin->mobile }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- Permissionها --}}
|
||||
|
||||
{{-- <td style="min-width: 220px; max-width: 300px; white-space: normal;">--}}
|
||||
|
||||
{{-- @forelse($admin->permissions as $permission)--}}
|
||||
|
||||
{{-- <span class="badge bg-primary-transparent mb-1">--}}
|
||||
|
||||
{{-- {{ $permission->name }}--}}
|
||||
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <span class="text-muted fs-12">--}}
|
||||
|
||||
{{-- بدون دسترسی--}}
|
||||
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- وضعیت --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- @if((int) $admin->status === 1)--}}
|
||||
|
||||
{{-- <span class="badge bg-success-transparent">--}}
|
||||
|
||||
{{-- <i class="ri-checkbox-circle-line me-1"></i>--}}
|
||||
|
||||
{{-- فعال--}}
|
||||
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- <span class="badge bg-danger-transparent">--}}
|
||||
|
||||
{{-- <i class="ri-close-circle-line me-1"></i>--}}
|
||||
|
||||
{{-- غیرفعال--}}
|
||||
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- تاریخ ایجاد --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- @if($admin->created_at)--}}
|
||||
|
||||
{{-- <span class="badge bg-info-transparent">--}}
|
||||
|
||||
{{-- {{ $admin->created_at->toJalali()->format('H:i Y/m/d') }}--}}
|
||||
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- ---}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- عملیات --}}
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <div class="hstack gap-2 fs-15">--}}
|
||||
|
||||
{{-- --}}{{-- ویرایش --}}
|
||||
|
||||
{{-- <a href="{{ route('admin.admins.edit', $admin) }}"--}}
|
||||
{{-- class="btn btn-secondary-light btn-icon btn-sm"--}}
|
||||
{{-- title="ویرایش">--}}
|
||||
|
||||
{{-- <i class="ri-pencil-line"></i>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- حذف --}}
|
||||
|
||||
{{-- <form action="{{ route('admin.admins.destroy', $admin) }}"--}}
|
||||
{{-- method="POST"--}}
|
||||
{{-- onsubmit="return confirm('آیا از حذف این مدیر مطمئن هستید؟')">--}}
|
||||
|
||||
{{-- @csrf--}}
|
||||
|
||||
{{-- @method('DELETE')--}}
|
||||
|
||||
{{-- <button type="submit"--}}
|
||||
{{-- class="btn btn-danger-light btn-icon btn-sm"--}}
|
||||
{{-- title="حذف">--}}
|
||||
|
||||
{{-- <i class="ri-delete-bin-line"></i>--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </form>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- </tr>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <tr>--}}
|
||||
|
||||
{{-- <td colspan="8" class="text-center py-5">--}}
|
||||
|
||||
{{-- <div class="text-muted">--}}
|
||||
|
||||
{{-- <i class="ri-user-settings-line fs-1 d-block mb-2"></i>--}}
|
||||
|
||||
{{-- مدیری برای نمایش وجود ندارد.--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- </tr>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </tbody>--}}
|
||||
|
||||
{{-- </table>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- Pagination --}}
|
||||
|
||||
{{-- @if($admins->hasPages())--}}
|
||||
|
||||
{{-- <div class="card-footer">--}}
|
||||
|
||||
{{-- {{ $admins->links() }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
{{--@extends('admin.layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'مدیریت مدیران')--}}
|
||||
|
||||
{{--@section('breadcrumb')--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <h1 class="page-title fw-medium fs-18 mb-2">--}}
|
||||
{{-- مدیریت مدیران--}}
|
||||
{{-- </h1>--}}
|
||||
|
||||
{{-- <nav>--}}
|
||||
|
||||
{{-- <ol class="breadcrumb mb-0">--}}
|
||||
|
||||
{{-- <li class="breadcrumb-item">--}}
|
||||
|
||||
{{-- <a href="{{ route('admin.dashboard.index') }}">--}}
|
||||
{{-- داشبورد--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- <li class="breadcrumb-item active">--}}
|
||||
{{-- مدیریت مدیران--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- </ol>--}}
|
||||
|
||||
{{-- </nav>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
|
||||
{{--@section('content')--}}
|
||||
|
||||
{{-- <div class="container-fluid pt-4">--}}
|
||||
|
||||
{{-- --}}{{-- عنوان و عملیات --}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
|
||||
{{-- <div class="card custom-card">--}}
|
||||
|
||||
{{-- <div class="card-body p-3">--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center justify-content-between flex-wrap gap-3">--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <h5 class="mb-1">--}}
|
||||
{{-- لیست مدیران--}}
|
||||
{{-- </h5>--}}
|
||||
|
||||
{{-- <p class="text-muted mb-0 fs-12">--}}
|
||||
{{-- مدیریت مدیران پنل آژانس هواپیمایی--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div>--}}
|
||||
|
||||
{{-- <a href="{{ route('admin.admins.create') }}"--}}
|
||||
{{-- class="btn btn-primary">--}}
|
||||
|
||||
{{-- <i class="ri-add-line me-1"></i>--}}
|
||||
|
||||
{{-- ایجاد مدیر جدید--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- جدول مدیران --}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
|
||||
{{-- <div class="card custom-card">--}}
|
||||
|
||||
{{-- <div class="table-responsive">--}}
|
||||
|
||||
{{-- <table class="table text-nowrap table-bordered">--}}
|
||||
|
||||
{{-- <thead>--}}
|
||||
|
||||
{{-- <tr>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- #--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- نام و نام خانوادگی--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- نام کاربری--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- ایمیل--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- موبایل--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- وضعیت--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- تاریخ ایجاد--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- <th>--}}
|
||||
{{-- عملیات--}}
|
||||
{{-- </th>--}}
|
||||
|
||||
{{-- </tr>--}}
|
||||
|
||||
{{-- </thead>--}}
|
||||
|
||||
{{-- <tbody>--}}
|
||||
|
||||
{{-- @forelse($admins as $admin)--}}
|
||||
|
||||
{{-- <tr>--}}
|
||||
|
||||
{{-- <td>--}}
|
||||
{{-- {{ $admin->id }}--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <span class="fw-semibold">--}}
|
||||
{{-- {{ $admin->full_name }}--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <span class="text-muted">--}}
|
||||
{{-- {{ $admin->username }}--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- {{ $admin->email }}--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- {{ $admin->mobile }}--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- @if((int) $admin->status === 1)--}}
|
||||
|
||||
{{-- <span class="badge bg-success-transparent">--}}
|
||||
{{-- فعال--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- <span class="badge bg-danger-transparent">--}}
|
||||
{{-- غیرفعال--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- {{ optional($admin->created_at)->format('Y/m/d') }}--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
|
||||
{{-- <td>--}}
|
||||
|
||||
{{-- <div class="hstack gap-2 fs-15">--}}
|
||||
|
||||
{{-- <a href="{{ route('admin.admins.edit', $admin) }}"--}}
|
||||
{{-- class="btn btn-secondary-light btn-icon btn-sm">--}}
|
||||
|
||||
{{-- <i class="ti ti-pencil"></i>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
|
||||
{{-- <form action="{{ route('admin.admins.destroy', $admin) }}"--}}
|
||||
{{-- method="POST"--}}
|
||||
{{-- onsubmit="return confirm('آیا از حذف این مدیر مطمئن هستید؟')">--}}
|
||||
|
||||
{{-- @csrf--}}
|
||||
|
||||
{{-- @method('DELETE')--}}
|
||||
|
||||
{{-- <button type="submit"--}}
|
||||
{{-- class="btn btn-danger-light btn-icon btn-sm">--}}
|
||||
|
||||
{{-- <i class="ri-delete-bin-line"></i>--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </form>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- </tr>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <tr>--}}
|
||||
|
||||
{{-- <td colspan="8" class="text-center py-4">--}}
|
||||
|
||||
{{-- <div class="text-muted">--}}
|
||||
|
||||
{{-- مدیری برای نمایش وجود ندارد.--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- </tr>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </tbody>--}}
|
||||
|
||||
{{-- </table>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div class="card-footer">--}}
|
||||
|
||||
{{-- {{ $admins->links() }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('title', 'افزودن شهر')
|
||||
|
||||
@section('content')
|
||||
<div class="admin-card p-4">
|
||||
<h5 class="mb-4">افزودن شهر جدید</h5>
|
||||
<form action="{{ route('admin.locations.cities.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="mb-3">
|
||||
<label class="form-label">نام شهر</label>
|
||||
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
|
||||
value="{{ old('name') }}">
|
||||
@error('name')
|
||||
<div class="invalid-feedback">{{ $message }}</div> @enderror
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">استان</label>
|
||||
<select name="province_id" class="form-control @error('province_id') is-invalid @enderror">
|
||||
<option value="">انتخاب استان...</option>
|
||||
@foreach($provinces as $province)
|
||||
<option
|
||||
value="{{ $province->id }}" {{ old('province_id') == $province->id ? 'selected' : '' }}>{{ $province->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('province_id')
|
||||
<div class="invalid-feedback">{{ $message }}</div> @enderror
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success">ذخیره اطلاعات</button>
|
||||
<a href="{{ route('admin.locations.cities.index') }}" class="btn btn-secondary">انصراف</a>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header"><h5>ویرایش شهر: {{ $city->name }}</h5></div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('admin.locations.cities.update', $city->id) }}" method="POST">
|
||||
@csrf @method('PUT')
|
||||
<div class="form-group">
|
||||
<label>نام شهر</label>
|
||||
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
|
||||
value="{{ old('name', $city->name) }}">
|
||||
@error('name') <span class="text-danger">{{ $message }}</span> @enderror
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>استان مربوطه</label>
|
||||
<select name="province_id" class="form-control @error('province_id') is-invalid @enderror">
|
||||
@foreach($provinces as $province)
|
||||
<option
|
||||
value="{{ $province->id }}" {{ old('province_id', $city->province_id) == $province->id ? 'selected' : '' }}>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('province_id') <span class="text-danger">{{ $message }}</span> @enderror
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">بروزرسانی</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,69 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('title', 'مدیریت شهرها')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">مدیریت شهرها</h1>
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="{{ route('admin.dashboard.index') }}">داشبورد</a></li>
|
||||
<li class="breadcrumb-item active">مدیریت مناطق / شهرها</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">لیست شهرها</h5>
|
||||
<a href="{{ route('admin.locations.cities.create') }}" class="btn btn-primary">افزودن شهر جدید</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('admin.locations.cities.index') }}" method="GET" class="mb-4">
|
||||
<select name="province_id" class="form-control w-25" onchange="this.form.submit()">
|
||||
<option value="">همه استانها</option>
|
||||
@foreach($provinces as $province)
|
||||
<option
|
||||
value="{{ $province->id }}" {{ request('province_id') == $province->id ? 'selected' : '' }}>{{ $province->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</form>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>نام شهر</th>
|
||||
<th>استان</th>
|
||||
<th class="text-center">عملیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($cities as $city)
|
||||
<tr>
|
||||
<td>{{ $city->name }}</td>
|
||||
<td>{{ $city->province->name ?? '-' }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{{ route('admin.locations.cities.edit', $city->id) }}"
|
||||
class="btn btn-sm btn-info text-white">ویرایش</a>
|
||||
<form action="{{ route('admin.locations.cities.destroy', $city->id) }}"
|
||||
method="POST" class="d-inline">
|
||||
@csrf @method('DELETE')
|
||||
<button class="btn btn-sm btn-danger" onclick="return confirm('آیا مطمئنید؟')">
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mt-3">{{ $cities->links() }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -51,16 +51,7 @@
|
||||
<div class="btn-group btn-group-sm" role="group">
|
||||
<a href="{{ route('admin.comments.show', $comment) }}"
|
||||
class="btn btn-outline-secondary" title="نمایش">نمایش</a>
|
||||
<a href="{{ route('admin.comments.edit', $comment) }}"
|
||||
class="btn btn-outline-primary" title="ویرایش">ویرایش</a>
|
||||
<form action="{{ route('admin.comments.destroy', $comment) }}" method="POST"
|
||||
class="d-inline"
|
||||
onsubmit="return confirm('نظر حذف شود؟')">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-outline-danger" title="حذف">حذف</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
|
||||
@@ -36,15 +36,7 @@
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="card-footer bg-white">
|
||||
<a href="{{ route('admin.comments.edit', $comment) }}" class="btn btn-primary btn-sm">ویرایش</a>
|
||||
<form action="{{ route('admin.comments.destroy', $comment) }}" method="POST" class="d-inline"
|
||||
onsubmit="return confirm('نظر حذف شود؟')">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-danger btn-sm">حذف</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -507,7 +507,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Pagination --}}
|
||||
@if($flights->hasPages())
|
||||
|
||||
<div class="card-footer">
|
||||
|
||||
@@ -221,142 +221,10 @@
|
||||
<script src="{{ asset('assets/js/countdown.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('assets/js/ion-range-slider.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/chart.js') }}"></script>
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
{{--<!DOCTYPE html>--}}
|
||||
{{--<html lang="fa" dir="rtl">--}}
|
||||
|
||||
{{--<head>--}}
|
||||
{{-- <meta charset="UTF-8">--}}
|
||||
|
||||
{{-- <meta name="viewport"--}}
|
||||
{{-- content="width=device-width, initial-scale=1.0">--}}
|
||||
|
||||
{{-- <title>--}}
|
||||
{{-- @yield('title', 'پنل مدیریت')--}}
|
||||
{{-- </title>--}}
|
||||
|
||||
{{-- --}}{{-- CSS اصلی پروژه --}}
|
||||
{{-- <link rel="stylesheet"--}}
|
||||
{{-- href="{{ asset('assets/admin/css/bootstrap.min.css') }}">--}}
|
||||
|
||||
{{-- <link rel="stylesheet"--}}
|
||||
{{-- href="{{ asset('assets/admin/css/icons.css') }}">--}}
|
||||
|
||||
{{-- <link rel="stylesheet"--}}
|
||||
{{-- href="{{ asset('assets/admin/css/style.css') }}">--}}
|
||||
|
||||
{{-- @stack('styles')--}}
|
||||
{{--</head>--}}
|
||||
|
||||
{{--<body>--}}
|
||||
|
||||
{{--<div class="page">--}}
|
||||
|
||||
{{-- --}}{{-- Sidebar --}}
|
||||
{{-- @include('admin.layouts.sidebar')--}}
|
||||
|
||||
{{-- <div class="main-content app-content">--}}
|
||||
|
||||
{{-- --}}{{-- Header --}}
|
||||
{{-- @include('admin.layouts.header')--}}
|
||||
|
||||
{{-- <main>--}}
|
||||
|
||||
{{-- --}}{{-- Breadcrumb --}}
|
||||
{{-- @hasSection('breadcrumb')--}}
|
||||
{{-- <div class="page-header-breadcrumb">--}}
|
||||
{{-- @yield('breadcrumb')--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- --}}{{-- Content --}}
|
||||
{{-- @yield('content')--}}
|
||||
|
||||
{{-- </main>--}}
|
||||
|
||||
{{-- --}}{{-- Footer --}}
|
||||
{{-- @include('admin.layouts.footer')--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--</div>--}}
|
||||
|
||||
{{--<script src="{{ asset('assets/admin/js/bootstrap.bundle.min.js') }}"></script>--}}
|
||||
|
||||
{{--@stack('scripts')--}}
|
||||
|
||||
{{--</body>--}}
|
||||
{{--</html>--}}
|
||||
|
||||
{{--<!DOCTYPE html>--}}
|
||||
{{--<html lang="fa" dir="rtl">--}}
|
||||
|
||||
{{--<head>--}}
|
||||
{{-- <meta charset="UTF-8">--}}
|
||||
|
||||
{{-- <meta name="viewport"--}}
|
||||
{{-- content="width=device-width, initial-scale=1.0">--}}
|
||||
|
||||
{{-- <title>--}}
|
||||
{{-- @yield('title', 'پنل مدیریت')--}}
|
||||
{{-- </title>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- CSS اصلی پروژه --}}
|
||||
{{-- <link rel="stylesheet"--}}
|
||||
{{-- href="{{ asset('assets/admin/css/bootstrap.min.css') }}">--}}
|
||||
|
||||
{{-- <link rel="stylesheet"--}}
|
||||
{{-- href="{{ asset('assets/admin/css/icons.css') }}">--}}
|
||||
|
||||
{{-- <link rel="stylesheet"--}}
|
||||
{{-- href="{{ asset('assets/admin/css/style.css') }}">--}}
|
||||
|
||||
{{-- @stack('styles')--}}
|
||||
{{--</head>--}}
|
||||
|
||||
{{--<body>--}}
|
||||
|
||||
{{--<div class="page">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- Sidebar --}}
|
||||
{{-- @include('admin.layouts.sidebar')--}}
|
||||
|
||||
{{-- <div class="main-content app-content">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- Header --}}
|
||||
{{-- @include('admin.layouts.header')--}}
|
||||
|
||||
{{-- <main>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- Breadcrumb --}}
|
||||
{{-- @hasSection('breadcrumb')--}}
|
||||
{{-- <div class="page-header-breadcrumb">--}}
|
||||
{{-- @yield('breadcrumb')--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- Content --}}
|
||||
{{-- @yield('content')--}}
|
||||
|
||||
{{-- </main>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- Footer --}}
|
||||
{{-- @include('admin.layouts.footer')--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--</div>--}}
|
||||
|
||||
{{--<script src="{{ asset('assets/admin/js/bootstrap.bundle.min.js') }}"></script>--}}
|
||||
|
||||
{{--@stack('scripts')--}}
|
||||
|
||||
{{--</body>--}}
|
||||
{{--</html>--}}
|
||||
|
||||
@@ -41,132 +41,3 @@
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
{{--<header class="app-header">--}}
|
||||
|
||||
{{-- <div class="container-fluid">--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center justify-content-between">--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center gap-3">--}}
|
||||
|
||||
{{-- <button type="button"--}}
|
||||
{{-- class="btn btn-light"--}}
|
||||
{{-- id="sidebarToggle">--}}
|
||||
|
||||
{{-- <i class="ri-menu-line"></i>--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- <span class="fw-semibold">--}}
|
||||
{{-- پنل مدیریت--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center gap-3">--}}
|
||||
|
||||
{{-- @auth('admin')--}}
|
||||
|
||||
{{-- <div class="dropdown">--}}
|
||||
|
||||
{{-- <button class="btn btn-light dropdown-toggle"--}}
|
||||
{{-- data-bs-toggle="dropdown">--}}
|
||||
|
||||
{{-- <i class="ri-user-line me-1"></i>--}}
|
||||
|
||||
{{-- {{ auth('admin')->user()->full_name }}--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- <ul class="dropdown-menu">--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="dropdown-item"--}}
|
||||
{{-- href="{{ route('admin.auth.logout') }}">--}}
|
||||
|
||||
{{-- <i class="ri-logout-box-line me-2"></i>--}}
|
||||
|
||||
{{-- خروج--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- </ul>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endauth--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--</header>--}}
|
||||
|
||||
{{--<header class="app-header">--}}
|
||||
|
||||
{{-- <div class="container-fluid">--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center justify-content-between">--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center gap-3">--}}
|
||||
|
||||
{{-- <button type="button"--}}
|
||||
{{-- class="btn btn-light"--}}
|
||||
{{-- id="sidebarToggle">--}}
|
||||
|
||||
{{-- <i class="ri-menu-line"></i>--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- <span class="fw-semibold">--}}
|
||||
{{-- پنل مدیریت--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="d-flex align-items-center gap-3">--}}
|
||||
|
||||
{{-- @auth('admin')--}}
|
||||
|
||||
{{-- <div class="dropdown">--}}
|
||||
|
||||
{{-- <button class="btn btn-light dropdown-toggle"--}}
|
||||
{{-- data-bs-toggle="dropdown">--}}
|
||||
|
||||
{{-- <i class="ri-user-line me-1"></i>--}}
|
||||
|
||||
{{-- {{ auth('admin')->user()->full_name }}--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- <ul class="dropdown-menu">--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="dropdown-item"--}}
|
||||
{{-- href="{{ route('admin.auth.logout') }}">--}}
|
||||
|
||||
{{-- <i class="ri-logout-box-line me-2"></i>--}}
|
||||
|
||||
{{-- خروج--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- </ul>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endauth--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--</header>--}}
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
<aside class="admin-sidebar">
|
||||
|
||||
<div class="admin-logo">
|
||||
|
||||
<a href="{{ route('admin.dashboard.index') }}">
|
||||
|
||||
✈️
|
||||
|
||||
آژانس هواپیمایی
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<nav class="admin-menu">
|
||||
|
||||
<div class="admin-menu-title">
|
||||
@@ -21,186 +15,101 @@
|
||||
|
||||
<a href="{{ route('admin.dashboard.index') }}"
|
||||
class="{{ request()->routeIs('admin.dashboard.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-dashboard"></i>
|
||||
|
||||
<span>
|
||||
داشبورد
|
||||
</span>
|
||||
|
||||
<span>داشبورد</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="admin-menu-title">
|
||||
مدیریت سفر
|
||||
</div>
|
||||
|
||||
|
||||
<a href="{{ route('admin.flights.index') }}"
|
||||
class="{{ request()->routeIs('admin.flights.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-plane"></i>
|
||||
|
||||
<span>
|
||||
مدیریت پروازها
|
||||
</span>
|
||||
|
||||
<span>مدیریت پروازها</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ route('admin.tours.index') }}"
|
||||
class="{{ request()->routeIs('admin.tours.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
<span>
|
||||
مدیریت تورها
|
||||
</span>
|
||||
|
||||
<span>مدیریت تورها</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ route('admin.travelTypes.index') }}"
|
||||
class="{{ request()->routeIs('admin.travelTypes.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-suitcase"></i>
|
||||
|
||||
<span>
|
||||
انواع سفر
|
||||
</span>
|
||||
|
||||
<span>انواع سفر</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ route('admin.airports.index') }}"
|
||||
class="{{ request()->routeIs('admin.airports.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-building"></i>
|
||||
|
||||
<span>
|
||||
فرودگاهها
|
||||
</span>
|
||||
|
||||
<span>فرودگاهها</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="admin-menu-title">
|
||||
مدیریت مناطق
|
||||
</div>
|
||||
|
||||
<a href="{{ route('admin.locations.provinces.index') }}"
|
||||
class="{{ request()->routeIs('admin.locations.provinces.*') ? 'active' : '' }}">
|
||||
<i class="fa fa-map"></i>
|
||||
<span>مدیریت استانها</span>
|
||||
</a>
|
||||
|
||||
<a href="{{ route('admin.locations.cities.index') }}"
|
||||
class="{{ request()->routeIs('admin.locations.cities.*') ? 'active' : '' }}">
|
||||
<i class="fa fa-map-signs"></i>
|
||||
<span>مدیریت شهرها</span>
|
||||
</a>
|
||||
|
||||
<div class="admin-menu-title">
|
||||
کاربران و تعاملات
|
||||
</div>
|
||||
|
||||
|
||||
<a href="{{ route('admin.users.index') }}"
|
||||
class="{{ request()->routeIs('admin.users.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-users"></i>
|
||||
|
||||
<span>
|
||||
کاربران
|
||||
</span>
|
||||
|
||||
<span>کاربران</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ route('admin.comments.index') }}"
|
||||
class="{{ request()->routeIs('admin.comments.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-comments"></i>
|
||||
|
||||
<span>
|
||||
نظرات
|
||||
</span>
|
||||
|
||||
<span>نظرات</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{{ route('admin.favorites.index') }}"
|
||||
class="{{ request()->routeIs('admin.favorites.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-heart"></i>
|
||||
|
||||
<span>
|
||||
علاقهمندیها
|
||||
</span>
|
||||
|
||||
<span>علاقهمندیها</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="admin-menu-title">
|
||||
مالی
|
||||
</div>
|
||||
|
||||
|
||||
{{-- <a href="{{ route('admin.payments.index') }}"--}}
|
||||
{{-- class="{{ request()->routeIs('admin.payments.*') ? 'active' : '' }}">--}}
|
||||
|
||||
{{-- <i class="fa fa-credit-card"></i>--}}
|
||||
|
||||
{{-- <span>--}}
|
||||
{{-- پرداختها--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
|
||||
<div class="admin-menu-title">
|
||||
تنظیمات سایت
|
||||
</div>
|
||||
|
||||
|
||||
{{-- <a href="{{ route('admin.sliders.index') }}"--}}
|
||||
{{-- class="{{ request()->routeIs('admin.sliders.*') ? 'active' : '' }}">--}}
|
||||
|
||||
{{-- <i class="fa fa-picture-o"></i>--}}
|
||||
|
||||
{{-- <span>--}}
|
||||
{{-- اسلایدرها--}}
|
||||
{{-- </span>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
|
||||
<a href="{{ route('admin.settings.index') }}"
|
||||
class="{{ request()->routeIs('admin.settings.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-cog"></i>
|
||||
|
||||
<span>
|
||||
تنظیمات
|
||||
</span>
|
||||
|
||||
<span>تنظیمات</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="admin-menu-title">
|
||||
مدیریت مدیران
|
||||
</div>
|
||||
|
||||
|
||||
<a href="{{ route('admin.admins.index') }}"
|
||||
class="{{ request()->routeIs('admin.admins.*') ? 'active' : '' }}">
|
||||
|
||||
<i class="fa fa-user-secret"></i>
|
||||
|
||||
<span>
|
||||
مدیران سیستم
|
||||
</span>
|
||||
|
||||
<span>مدیران سیستم</span>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="admin-menu-title">
|
||||
حساب کاربری
|
||||
</div>
|
||||
|
||||
|
||||
<a href="{{ route('admin.auth.logout') }}">
|
||||
|
||||
<i class="fa fa-sign-out"></i>
|
||||
|
||||
<span>
|
||||
خروج
|
||||
</span>
|
||||
|
||||
<span>خروج</span>
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header"><h5>افزودن استان جدید</h5></div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('admin.locations.provinces.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>نام استان</label>
|
||||
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
|
||||
value="{{ old('name') }}">
|
||||
@error('name') <span class="text-danger">{{ $message }}</span> @enderror
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success">ذخیره</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header"><h5>ویرایش استان: {{ $province->name }}</h5></div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('admin.locations.provinces.update', $province->id) }}" method="POST">
|
||||
@csrf @method('PUT')
|
||||
<div class="form-group">
|
||||
<label>نام استان</label>
|
||||
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror"
|
||||
value="{{ old('name', $province->name) }}">
|
||||
@error('name') <span class="text-danger">{{ $message }}</span> @enderror
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">بروزرسانی</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,59 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('title', 'مدیریت استانها')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">مدیریت استانها</h1>
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="{{ route('admin.dashboard.index') }}">داشبورد</a></li>
|
||||
<li class="breadcrumb-item active">مدیریت مناطق / استانها</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">لیست استانها</h5>
|
||||
<a href="{{ route('admin.locations.provinces.create') }}" class="btn btn-primary">افزودن استان جدید</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>شناسه</th>
|
||||
<th>نام استان</th>
|
||||
<th class="text-center">عملیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($provinces as $province)
|
||||
<tr>
|
||||
<td>{{ $province->id }}</td>
|
||||
<td>{{ $province->name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{{ route('admin.locations.provinces.edit', $province->id) }}"
|
||||
class="btn btn-sm btn-info text-white">ویرایش</a>
|
||||
<form action="{{ route('admin.locations.provinces.destroy', $province->id) }}"
|
||||
method="POST" class="d-inline">
|
||||
@csrf @method('DELETE')
|
||||
<button class="btn btn-sm btn-danger" onclick="return confirm('آیا مطمئنید؟')">
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mt-3">{{ $provinces->links() }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -24,7 +24,7 @@
|
||||
@method('PUT')
|
||||
|
||||
<div class="row">
|
||||
<!-- عنوان -->
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label">عنوان تور</label>
|
||||
<input type="text" name="title" class="form-control"
|
||||
|
||||
@@ -378,10 +378,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- ============================= --}}
|
||||
{{-- Pagination --}}
|
||||
{{-- ============================= --}}
|
||||
|
||||
@if($tours->hasPages())
|
||||
|
||||
<div class="card-footer">
|
||||
|
||||
@@ -25,11 +25,7 @@
|
||||
<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
|
||||
{{-- <div class="mb-3 form-check">--}}
|
||||
{{-- <input type="checkbox" name="status" value="1" class="form-check-input"--}}
|
||||
{{-- id="status" @checked(old('status', true))>--}}
|
||||
{{-- <label class="form-check-label" for="status">فعال باشد</label>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
<input type="hidden" name="status" value="0">
|
||||
|
||||
<div class="form-check">
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<div>
|
||||
<!-- Well begun is half done. - Aristotle -->
|
||||
</div>
|
||||
@@ -1,10 +1,30 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('title', 'تغییر رمز کاربر')
|
||||
@section('title', 'تغییر رمز عبور')
|
||||
|
||||
@section('breadcrumb')
|
||||
<div>
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">تغییر رمز عبور کاربر</h1>
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item"><a href="{{ route('admin.dashboard.index') }}">داشبورد</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ route('admin.users.index') }}">ثبتنامیها</a></li>
|
||||
<li class="breadcrumb-item active">تغییر رمز عبور</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
{{ session('success') }}
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul class="mb-0">
|
||||
@@ -19,15 +39,17 @@
|
||||
<div class="col-xl-6">
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">تغییر رمز عبور — {{ $user->full_name ?? $user->name }}</h5>
|
||||
<h5 class="mb-0">
|
||||
تغییر رمز عبور برای: {{ $user->first_name }} {{ $user->last_name }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin.users.update-password', $user) }}">
|
||||
<form action="{{ route('admin.users.update-password', $user) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">رمز عبور جدید</label>
|
||||
<label class="form-label">رمز عبور جدید <span class="text-danger">*</span></label>
|
||||
<input type="password" name="password"
|
||||
class="form-control @error('password') is-invalid @enderror">
|
||||
@error('password')
|
||||
@@ -36,14 +58,14 @@
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">تکرار رمز جدید</label>
|
||||
<label class="form-label">تکرار رمز عبور <span class="text-danger">*</span></label>
|
||||
<input type="password" name="password_confirmation"
|
||||
class="form-control">
|
||||
class="form-control @error('password') is-invalid @enderror">
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-success">ذخیره رمز</button>
|
||||
<a href="{{ route('admin.users.index') }}" class="btn btn-secondary">انصراف</a>
|
||||
<button type="submit" class="btn btn-warning">بروزرسانی رمز</button>
|
||||
<a href="{{ route('admin.users.index') }}" class="btn btn-secondary">بازگشت</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -53,4 +75,3 @@
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@@ -7,12 +7,8 @@
|
||||
<h1 class="page-title fw-medium fs-18 mb-2">ویرایش کاربر</h1>
|
||||
<nav>
|
||||
<ol class="breadcrumb mb-0">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{{ route('admin.dashboard.index') }}">داشبورد</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{{ route('admin.users.index') }}">مدیریت کاربران</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item"><a href="{{ route('admin.dashboard.index') }}">داشبورد</a></li>
|
||||
<li class="breadcrumb-item"><a href="{{ route('admin.users.index') }}">ثبتنامیها</a></li>
|
||||
<li class="breadcrumb-item active">ویرایش کاربر</li>
|
||||
</ol>
|
||||
</nav>
|
||||
@@ -22,100 +18,98 @@
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
{{ session('success') }}
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if($errors->any())
|
||||
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||||
<div class="alert alert-danger">
|
||||
<ul class="mb-0">
|
||||
@foreach($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-xl-8 col-lg-10">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="card custom-card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">ویرایش کاربر</h5>
|
||||
<a href="{{ route('admin.users.index') }}" class="btn btn-sm btn-secondary">بازگشت</a>
|
||||
<div class="card-header">
|
||||
<h5 class="mb-0">ویرایش اطلاعات کاربر</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ route('admin.users.update', $user) }}">
|
||||
<form action="{{ route('admin.users.update', $user) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
{{-- نام کامل --}}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">نام کامل <span class="text-danger">*</span></label>
|
||||
<input type="text"
|
||||
name="full_name"
|
||||
value="{{ old('full_name', $user->full_name ?? $user->name) }}"
|
||||
class="form-control @error('full_name') is-invalid @enderror">
|
||||
@error('full_name')
|
||||
<small class="text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
{{-- ایمیل --}}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">ایمیل <span class="text-danger">*</span></label>
|
||||
<input type="email"
|
||||
name="email"
|
||||
value="{{ old('email', $user->email) }}"
|
||||
class="form-control @error('email') is-invalid @enderror">
|
||||
@error('email')
|
||||
<small class="text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
{{-- موبایل --}}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">موبایل</label>
|
||||
<input type="text"
|
||||
name="mobile"
|
||||
value="{{ old('mobile', $user->mobile ?? '') }}"
|
||||
class="form-control @error('mobile') is-invalid @enderror">
|
||||
@error('mobile')
|
||||
<small class="text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
{{-- وضعیت --}}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">وضعیت حساب</label>
|
||||
<div class="form-check form-switch">
|
||||
<input type="checkbox"
|
||||
name="status"
|
||||
value="1"
|
||||
class="form-check-input"
|
||||
id="status"
|
||||
{{ (int) old('status', $user->status) === 1 ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="status">حساب فعال باشد</label>
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">نام <span class="text-danger">*</span></label>
|
||||
<input type="text" name="first_name"
|
||||
value="{{ old('first_name', $user->first_name) }}"
|
||||
class="form-control @error('first_name') is-invalid @enderror">
|
||||
@error('first_name')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">نام خانوادگی <span class="text-danger">*</span></label>
|
||||
<input type="text" name="last_name"
|
||||
value="{{ old('last_name', $user->last_name) }}"
|
||||
class="form-control @error('last_name') is-invalid @enderror">
|
||||
@error('last_name')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">ایمیل <span class="text-danger">*</span></label>
|
||||
<input type="email" name="email"
|
||||
value="{{ old('email', $user->email) }}"
|
||||
class="form-control @error('email') is-invalid @enderror">
|
||||
@error('email')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">موبایل</label>
|
||||
<input type="text" name="mobile"
|
||||
value="{{ old('mobile', $user->mobile) }}"
|
||||
class="form-control @error('mobile') is-invalid @enderror">
|
||||
@error('mobile')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">وضعیت</label>
|
||||
<select name="status" class="form-select @error('status') is-invalid @enderror">
|
||||
<option value="1" @selected(old('status', $user->status) == 1)>فعال</option>
|
||||
<option value="0" @selected(old('status', $user->status) == 0)>غیرفعال</option>
|
||||
</select>
|
||||
@error('status')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
</div>
|
||||
@error('status')
|
||||
<small class="text-danger">{{ $message }}</small>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mt-4 d-flex gap-2">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
ذخیره تغییرات
|
||||
</button>
|
||||
<a href="{{ route('admin.users.index') }}" class="btn btn-secondary">
|
||||
انصراف
|
||||
</a>
|
||||
<div class="d-flex gap-2 mt-4">
|
||||
<button type="submit" class="btn btn-success">ذخیره تغییرات</button>
|
||||
<a href="{{ route('admin.users.change-password', $user) }}"
|
||||
class="btn btn-warning">تغییر رمز عبور</a>
|
||||
<a href="{{ route('admin.users.index') }}" class="btn btn-secondary">بازگشت به لیست</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<form method="GET" action="{{ route('admin.users.index') }}" class="row g-3 align-items-end">
|
||||
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">کلمه کلیدی (نام / ایمیل / موبایل)</label>
|
||||
<label class="form-label">کلمه کلیدی (نام / نام خانوادگی / ایمیل / موبایل)</label>
|
||||
<input type="text" name="search" value="{{ request('search') }}"
|
||||
class="form-control" placeholder="جستجو...">
|
||||
</div>
|
||||
@@ -110,7 +110,7 @@
|
||||
<tr>
|
||||
<td>{{ $user->id }}</td>
|
||||
<td>
|
||||
<div class="fw-semibold">{{ $user->full_name ?? $user->name }}</div>
|
||||
<div class="fw-semibold">{{ $user->first_name }} {{ $user->last_name }}</div>
|
||||
<small class="text-muted">کاربر سایت</small>
|
||||
</td>
|
||||
<td>{{ $user->email }}</td>
|
||||
@@ -126,31 +126,25 @@
|
||||
{{ $user->created_at?->toJalali()->format('Y/m/d') ?? '-' }}
|
||||
</td>
|
||||
|
||||
{{-- عملیات (بر اساس دسترسی) --}}
|
||||
{{-- عملیات --}}
|
||||
<td class="text-center">
|
||||
<div class="d-flex justify-content-center gap-2">
|
||||
|
||||
@can('users.edit')
|
||||
<a href="{{ route('admin.users.edit', $user) }}"
|
||||
class="btn btn-sm btn-primary fw-semibold">ویرایش</a>
|
||||
@endcan
|
||||
<a href="{{ route('admin.users.edit', $user) }}"
|
||||
class="btn btn-sm btn-primary fw-semibold">ویرایش</a>
|
||||
|
||||
@can('users.change-password')
|
||||
<a href="{{ route('admin.users.change-password', $user) }}"
|
||||
class="btn btn-sm btn-warning fw-semibold">تغییر رمز</a>
|
||||
@endcan
|
||||
<a href="{{ route('admin.users.change-password', $user) }}"
|
||||
class="btn btn-sm btn-warning fw-semibold">تغییر رمز</a>
|
||||
|
||||
@can('users.delete')
|
||||
<form action="{{ route('admin.users.destroy', $user) }}"
|
||||
method="POST" class="d-inline"
|
||||
onsubmit="return confirm('آیا از حذف این کاربر مطمئن هستید؟')">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-sm btn-danger fw-semibold">
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
@endcan
|
||||
<form action="{{ route('admin.users.destroy', $user) }}"
|
||||
method="POST" class="d-inline"
|
||||
onsubmit="return confirm('آیا از حذف این کاربر مطمئن هستید؟')">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-sm btn-danger fw-semibold">
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
@@ -177,358 +171,3 @@
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
{{--@extends('admin.layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'مدیریت کاربران')--}}
|
||||
|
||||
{{--@section('breadcrumb')--}}
|
||||
{{-- <div>--}}
|
||||
{{-- <h1 class="page-title fw-medium fs-18 mb-2">مدیریت کاربران</h1>--}}
|
||||
{{-- <nav>--}}
|
||||
{{-- <ol class="breadcrumb mb-0">--}}
|
||||
{{-- <li class="breadcrumb-item">--}}
|
||||
{{-- <a href="{{ route('admin.dashboard.index') }}">داشبورد</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li class="breadcrumb-item active">مدیریت کاربران</li>--}}
|
||||
{{-- </ol>--}}
|
||||
{{-- </nav>--}}
|
||||
{{-- </div>--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
{{-- <div class="container-fluid pt-4">--}}
|
||||
|
||||
{{-- @if(session('success'))--}}
|
||||
{{-- <div class="alert alert-success alert-dismissible fade show" role="alert">--}}
|
||||
{{-- {{ session('success') }}--}}
|
||||
{{-- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- @if(session('error'))--}}
|
||||
{{-- <div class="alert alert-danger alert-dismissible fade show" role="alert">--}}
|
||||
{{-- {{ session('error') }}--}}
|
||||
{{-- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- --}}{{-- جستجو --}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
{{-- <div class="card custom-card">--}}
|
||||
{{-- <div class="card-body p-3">--}}
|
||||
{{-- <form method="GET" action="{{ route('admin.users.index') }}"--}}
|
||||
{{-- class="d-flex flex-wrap gap-2 align-items-center">--}}
|
||||
{{-- <div class="flex-grow-1" style="min-width: 200px;">--}}
|
||||
{{-- <input type="text"--}}
|
||||
{{-- name="search"--}}
|
||||
{{-- value="{{ request('search') }}"--}}
|
||||
{{-- class="form-control"--}}
|
||||
{{-- placeholder="جستجو بر اساس نام، ایمیل یا موبایل...">--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <button type="submit" class="btn btn-primary">جستجو</button>--}}
|
||||
{{-- @if(request('search'))--}}
|
||||
{{-- <a href="{{ route('admin.users.index') }}" class="btn btn-secondary">پاککردن</a>--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </form>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- --}}{{-- جدول کاربران --}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
{{-- <div class="card custom-card">--}}
|
||||
{{-- <div class="card-body p-3 d-flex justify-content-between align-items-center">--}}
|
||||
{{-- <h5 class="mb-0">لیست کاربران</h5>--}}
|
||||
{{-- <span class="badge bg-primary-transparent">{{ $users->total() }} کاربر</span>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="table-responsive">--}}
|
||||
{{-- <table class="table text-nowrap table-hover table-bordered mb-0">--}}
|
||||
{{-- <thead>--}}
|
||||
{{-- <tr>--}}
|
||||
{{-- <th>#</th>--}}
|
||||
{{-- <th>نام کاربر</th>--}}
|
||||
{{-- <th>ایمیل</th>--}}
|
||||
{{-- <th>موبایل</th>--}}
|
||||
{{-- <th>وضعیت</th>--}}
|
||||
{{-- <th>تاریخ عضویت</th>--}}
|
||||
{{-- <th class="text-center">عملیات</th>--}}
|
||||
{{-- </tr>--}}
|
||||
{{-- </thead>--}}
|
||||
|
||||
{{-- <tbody>--}}
|
||||
{{-- @forelse($users as $user)--}}
|
||||
{{-- <tr>--}}
|
||||
{{-- <td>{{ $user->id }}</td>--}}
|
||||
|
||||
{{-- --}}{{-- نام --}}
|
||||
{{-- <td>--}}
|
||||
{{-- <div class="d-flex align-items-center">--}}
|
||||
{{-- <div class="avatar avatar-sm bg-primary-transparent me-2 fw-semibold">--}}
|
||||
{{-- {{ mb_substr($user->full_name ?? $user->name, 0, 1) }}--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div>--}}
|
||||
{{-- <div class="fw-semibold">{{ $user->full_name ?? $user->name }}</div>--}}
|
||||
{{-- <small class="text-muted">کاربر سایت</small>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- --}}{{-- ایمیل --}}
|
||||
{{-- <td>{{ $user->email }}</td>--}}
|
||||
|
||||
{{-- --}}{{-- موبایل --}}
|
||||
{{-- <td>{{ $user->mobile ?? '-' }}</td>--}}
|
||||
|
||||
{{-- --}}{{-- وضعیت --}}
|
||||
{{-- <td>--}}
|
||||
{{-- @if((int) $user->status === 1)--}}
|
||||
{{-- <span class="badge bg-success-subtle text-success">فعال</span>--}}
|
||||
{{-- @else--}}
|
||||
{{-- <span class="badge bg-danger-subtle text-danger">غیرفعال</span>--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- --}}{{-- تاریخ عضویت --}}
|
||||
{{-- <td>--}}
|
||||
{{-- @if($user->created_at)--}}
|
||||
{{-- {{ $user->created_at->toJalali()->format('Y/m/d H:i') }}--}}
|
||||
{{-- @else--}}
|
||||
{{-- ---}}
|
||||
{{-- @endif--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- --}}{{-- عملیات --}}
|
||||
{{-- <td class="text-center">--}}
|
||||
{{-- <div class="d-flex justify-content-center gap-2">--}}
|
||||
|
||||
{{-- --}}{{-- ویرایش --}}
|
||||
{{-- <a href="{{ route('admin.users.edit', $user) }}"--}}
|
||||
{{-- class="btn btn-sm btn-primary fw-semibold">--}}
|
||||
{{-- ویرایش--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- --}}{{-- حذف --}}
|
||||
{{-- <form action="{{ route('admin.users.destroy', $user) }}"--}}
|
||||
{{-- method="POST"--}}
|
||||
{{-- class="d-inline"--}}
|
||||
{{-- onsubmit="return confirm('آیا از حذف این کاربر مطمئن هستید؟')">--}}
|
||||
{{-- @csrf--}}
|
||||
{{-- @method('DELETE')--}}
|
||||
{{-- <button type="submit" class="btn btn-sm btn-danger fw-semibold">--}}
|
||||
{{-- حذف--}}
|
||||
{{-- </button>--}}
|
||||
{{-- </form>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- </td>--}}
|
||||
{{-- </tr>--}}
|
||||
{{-- @empty--}}
|
||||
{{-- <tr>--}}
|
||||
{{-- <td colspan="7" class="text-center py-5 text-muted">--}}
|
||||
{{-- کاربری برای نمایش وجود ندارد.--}}
|
||||
{{-- </td>--}}
|
||||
{{-- </tr>--}}
|
||||
{{-- @endforelse--}}
|
||||
{{-- </tbody>--}}
|
||||
{{-- </table>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- --}}{{-- صفحهبندی --}}
|
||||
{{-- @if($users->hasPages())--}}
|
||||
{{-- <div class="card-footer">--}}
|
||||
{{-- {{ $users->links() }}--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
|
||||
{{--@extends('admin.layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'مدیریت کاربران')--}}
|
||||
|
||||
{{--@section('breadcrumb')--}}
|
||||
{{-- <div>--}}
|
||||
{{-- <h1 class="page-title fw-medium fs-18 mb-2">مدیریت کاربران</h1>--}}
|
||||
{{-- <nav>--}}
|
||||
{{-- <ol class="breadcrumb mb-0">--}}
|
||||
{{-- <li class="breadcrumb-item">--}}
|
||||
{{-- <a href="{{ route('admin.dashboard.index') }}">داشبورد</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li class="breadcrumb-item active">مدیریت کاربران</li>--}}
|
||||
{{-- </ol>--}}
|
||||
{{-- </nav>--}}
|
||||
{{-- </div>--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
{{-- <div class="container-fluid pt-4">--}}
|
||||
|
||||
{{-- @if(session('success'))--}}
|
||||
{{-- <div class="alert alert-success alert-dismissible fade show" role="alert">--}}
|
||||
{{-- {{ session('success') }}--}}
|
||||
{{-- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- @if(session('error'))--}}
|
||||
{{-- <div class="alert alert-danger alert-dismissible fade show" role="alert">--}}
|
||||
{{-- {{ session('error') }}--}}
|
||||
{{-- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- جستجو --}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
{{-- <div class="card custom-card">--}}
|
||||
{{-- <div class="card-body p-3">--}}
|
||||
{{-- <form method="GET" action="{{ route('admin.users.index') }}"--}}
|
||||
{{-- class="d-flex flex-wrap gap-2 align-items-center">--}}
|
||||
{{-- <div class="flex-grow-1" style="min-width: 200px;">--}}
|
||||
{{-- <input type="text"--}}
|
||||
{{-- name="search"--}}
|
||||
{{-- value="{{ request('search') }}"--}}
|
||||
{{-- class="form-control"--}}
|
||||
{{-- placeholder="جستجو بر اساس نام، ایمیل یا موبایل...">--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <button type="submit" class="btn btn-primary">جستجو</button>--}}
|
||||
{{-- @if(request('search'))--}}
|
||||
{{-- <a href="{{ route('admin.users.index') }}" class="btn btn-secondary">پاککردن</a>--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </form>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- جدول کاربران --}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- <div class="col-xl-12">--}}
|
||||
{{-- <div class="card custom-card">--}}
|
||||
{{-- <div class="card-body p-3 d-flex justify-content-between align-items-center">--}}
|
||||
{{-- <h5 class="mb-0">لیست کاربران</h5>--}}
|
||||
{{-- <span class="badge bg-primary-transparent">{{ $users->total() }} کاربر</span>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="table-responsive">--}}
|
||||
{{-- <table class="table text-nowrap table-hover table-bordered mb-0">--}}
|
||||
{{-- <thead>--}}
|
||||
{{-- <tr>--}}
|
||||
{{-- <th>#</th>--}}
|
||||
{{-- <th>نام کاربر</th>--}}
|
||||
{{-- <th>ایمیل</th>--}}
|
||||
{{-- <th>موبایل</th>--}}
|
||||
{{-- <th>وضعیت</th>--}}
|
||||
{{-- <th>تاریخ عضویت</th>--}}
|
||||
{{-- <th class="text-center">عملیات</th>--}}
|
||||
{{-- </tr>--}}
|
||||
{{-- </thead>--}}
|
||||
|
||||
{{-- <tbody>--}}
|
||||
{{-- @forelse($users as $user)--}}
|
||||
{{-- <tr>--}}
|
||||
{{-- <td>{{ $user->id }}</td>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- نام --}}
|
||||
{{-- <td>--}}
|
||||
{{-- <div class="d-flex align-items-center">--}}
|
||||
{{-- <div class="avatar avatar-sm bg-primary-transparent me-2 fw-semibold">--}}
|
||||
{{-- {{ mb_substr($user->full_name ?? $user->name, 0, 1) }}--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div>--}}
|
||||
{{-- <div class="fw-semibold">{{ $user->full_name ?? $user->name }}</div>--}}
|
||||
{{-- <small class="text-muted">کاربر سایت</small>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- ایمیل --}}
|
||||
{{-- <td>{{ $user->email }}</td>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- موبایل --}}
|
||||
{{-- <td>{{ $user->mobile ?? '-' }}</td>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- وضعیت --}}
|
||||
{{-- <td>--}}
|
||||
{{-- @if((int) $user->status === 1)--}}
|
||||
{{-- <span class="badge bg-success-subtle text-success">فعال</span>--}}
|
||||
{{-- @else--}}
|
||||
{{-- <span class="badge bg-danger-subtle text-danger">غیرفعال</span>--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- تاریخ عضویت --}}
|
||||
{{-- <td>--}}
|
||||
{{-- @if($user->created_at)--}}
|
||||
{{-- {{ $user->created_at->toJalali()->format('Y/m/d H:i') }}--}}
|
||||
{{-- @else--}}
|
||||
{{-- ---}}
|
||||
{{-- @endif--}}
|
||||
{{-- </td>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- عملیات --}}
|
||||
{{-- <td class="text-center">--}}
|
||||
{{-- <div class="d-flex justify-content-center gap-2">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- نمایش --}}
|
||||
{{-- <a href="{{ route('admin.users.show', $user) }}"--}}
|
||||
{{-- class="btn btn-sm btn-secondary fw-semibold">--}}
|
||||
{{-- نمایش--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- ویرایش --}}
|
||||
{{-- <a href="{{ route('admin.users.edit', $user) }}"--}}
|
||||
{{-- class="btn btn-sm btn-primary fw-semibold">--}}
|
||||
{{-- ویرایش--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- حذف --}}
|
||||
{{-- <form action="{{ route('admin.users.destroy', $user) }}"--}}
|
||||
{{-- method="POST"--}}
|
||||
{{-- class="d-inline"--}}
|
||||
{{-- onsubmit="return confirm('آیا از حذف این کاربر مطمئن هستید؟')">--}}
|
||||
{{-- @csrf--}}
|
||||
{{-- @method('DELETE')--}}
|
||||
{{-- <button type="submit" class="btn btn-sm btn-danger fw-semibold">--}}
|
||||
{{-- حذف--}}
|
||||
{{-- </button>--}}
|
||||
{{-- </form>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- </td>--}}
|
||||
{{-- </tr>--}}
|
||||
{{-- @empty--}}
|
||||
{{-- <tr>--}}
|
||||
{{-- <td colspan="7" class="text-center py-5 text-muted">--}}
|
||||
{{-- کاربری برای نمایش وجود ندارد.--}}
|
||||
{{-- </td>--}}
|
||||
{{-- </tr>--}}
|
||||
{{-- @endforelse--}}
|
||||
{{-- </tbody>--}}
|
||||
{{-- </table>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- صفحهبندی --}}
|
||||
{{-- @if($users->hasPages())--}}
|
||||
{{-- <div class="card-footer">--}}
|
||||
{{-- {{ $users->links() }}--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endif--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
|
||||
@@ -1,3 +1,78 @@
|
||||
<div>
|
||||
<!-- No surplus words or unnecessary actions. - Marcus Aurelius -->
|
||||
</div>
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container py-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2>نظرات من</h2>
|
||||
<a href="{{ route('account.index') }}" class="btn btn-outline-secondary btn-sm">بازگشت به پنل</a>
|
||||
</div>
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
@if($comments->isEmpty())
|
||||
<div class="alert alert-info">
|
||||
هنوز نظری ثبت نکردهای.
|
||||
<a href="{{ route('tours.index') }}" class="alert-link">مشاهده تورها</a>
|
||||
</div>
|
||||
@else
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover align-middle mb-0">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>مربوط به</th>
|
||||
<th>متن نظر</th>
|
||||
<th>تاریخ</th>
|
||||
<th>وضعیت</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($comments as $comment)
|
||||
<tr>
|
||||
{{-- آیتم مرتبط (تور یا پرواز) --}}
|
||||
<td>
|
||||
@if($comment->commentable)
|
||||
@if($comment->commentable instanceof \App\Models\Tour)
|
||||
<a href="{{ route('tours.show', $comment->commentable) }}">
|
||||
<i class="fa fa-plane"></i> {{ $comment->commentable->title }}
|
||||
</a>
|
||||
@else
|
||||
<a href="{{ route('flights.show', $comment->commentable) }}">
|
||||
<i class="fa fa-plane"></i>
|
||||
{{ $comment->commentable->title ?? $comment->commentable->flight_number ?? 'پرواز' }}
|
||||
</a>
|
||||
@endif
|
||||
@else
|
||||
<span class="text-muted">حذف شده</span>
|
||||
@endif
|
||||
</td>
|
||||
|
||||
<td class="text-muted">{{ Str::limit($comment->body, 80) }}</td>
|
||||
<td>{{ $comment->created_at->format('Y/m/d') }}</td>
|
||||
|
||||
<td>
|
||||
@if($comment->status == 2)
|
||||
<span class="badge bg-success">تایید شده</span>
|
||||
@elseif($comment->status == 1)
|
||||
<span class="badge bg-warning text-dark">در انتظار تایید</span>
|
||||
@else
|
||||
<span class="badge bg-danger">رد شده</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 d-flex justify-content-center">
|
||||
{{ $comments->links() }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -20,51 +20,3 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{--<div class="banner _h-33vh _br-3 banner-animate banner-animate-mask-in">--}}
|
||||
|
||||
{{-- <div--}}
|
||||
{{-- class="banner-bg"--}}
|
||||
{{-- style="background-image:url('{{ asset($image) }}');">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="banner-mask"></div>--}}
|
||||
|
||||
{{-- <a--}}
|
||||
{{-- class="banner-link"--}}
|
||||
{{-- href="#">--}}
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- <div class="banner-caption _pt-120 banner-caption-bottom banner-caption-grad">--}}
|
||||
|
||||
{{-- <h5 class="banner-title">--}}
|
||||
{{-- {{ $title }}--}}
|
||||
{{-- </h5>--}}
|
||||
|
||||
{{-- <p class="banner-subtitle">--}}
|
||||
{{-- {{ $country }}--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--</div>--}}
|
||||
|
||||
{{--@props(['tour'])--}}
|
||||
|
||||
{{--<div class="card tour-card">--}}
|
||||
{{-- <a href="{{ route('tours.show', $tour) }}">--}}
|
||||
{{-- <img src="{{ $tour->images->first()->path ?? asset('images/placeholder.jpg') }}" class="card-img-top"--}}
|
||||
{{-- alt="{{ $tour->title }}">--}}
|
||||
{{-- </a>--}}
|
||||
{{-- <div class="card-body">--}}
|
||||
{{-- <h5 class="card-title">--}}
|
||||
{{-- <a href="{{ route('tours.show', $tour) }}">{{ $tour->title }}</a>--}}
|
||||
{{-- </h5>--}}
|
||||
{{-- <p class="card-text">{{ Str::limit($tour->description, 80) }}</p>--}}
|
||||
{{-- <div class="d-flex justify-content-between">--}}
|
||||
{{-- <span>{{ $tour->travelType->title ?? '—' }}</span>--}}
|
||||
{{-- <strong>{{ number_format($tour->price) }} تومان</strong>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{--</div>--}}
|
||||
|
||||
|
||||
@@ -1,273 +1,72 @@
|
||||
<div class="col-md-4 col-sm-6">
|
||||
@extends('layouts.app')
|
||||
|
||||
<div class="theme-search-results-item">
|
||||
@section('title', 'آرشیو پروازها')
|
||||
|
||||
<div class="theme-search-results-item-header">
|
||||
@push('styles')
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/archive.css') }}">
|
||||
@endpush
|
||||
|
||||
<div>
|
||||
<strong>
|
||||
{{ $flight->airline_name }}
|
||||
</strong>
|
||||
</div>
|
||||
@section('content')
|
||||
<div class="archive-page">
|
||||
<div class="container">
|
||||
|
||||
<div>
|
||||
<strong>
|
||||
{{ $flight->flight_number }}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="theme-search-results-item-body">
|
||||
|
||||
{{-- مسیر پرواز --}}
|
||||
<div class="text-center">
|
||||
|
||||
<div>
|
||||
|
||||
<strong>
|
||||
{{ $flight->origin }}
|
||||
</strong>
|
||||
|
||||
<span>
|
||||
→
|
||||
</span>
|
||||
|
||||
<strong>
|
||||
{{ $flight->destination }}
|
||||
</strong>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
{{-- ساعت پرواز --}}
|
||||
<div class="row">
|
||||
|
||||
<div class="col-xs-6 text-center">
|
||||
|
||||
<small>
|
||||
حرکت
|
||||
</small>
|
||||
|
||||
<div>
|
||||
<strong>
|
||||
{{ $flight->departure_time }}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-xs-6 text-center">
|
||||
|
||||
<small>
|
||||
رسیدن
|
||||
</small>
|
||||
|
||||
<div>
|
||||
<strong>
|
||||
{{ $flight->arrival_time }}
|
||||
</strong>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
{{-- مدت --}}
|
||||
<div class="text-center">
|
||||
|
||||
<small>
|
||||
مدت پرواز
|
||||
</small>
|
||||
|
||||
<div>
|
||||
{{ $flight->duration }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
{{-- قیمت --}}
|
||||
<div class="text-center">
|
||||
|
||||
<small>
|
||||
قیمت
|
||||
</small>
|
||||
|
||||
<div>
|
||||
|
||||
<strong>
|
||||
{{ number_format($flight->price) }}
|
||||
</strong>
|
||||
|
||||
تومان
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="margin-top: 15px;">
|
||||
|
||||
<a
|
||||
href="{{ route('flights.show', ['flight' => $flight->id]) }}"
|
||||
class="btn btn-primary btn-block"
|
||||
>
|
||||
مشاهده جزئیات
|
||||
{{-- هدر آرشیو --}}
|
||||
<div class="archive-header">
|
||||
<h4><i class="fa fa-plane mr-2"></i> آرشیو پروازها</h4>
|
||||
<a href="{{ route('index') }}" class="btn-back">
|
||||
<i class="fa fa-home"></i> بازگشت به صفحه اصلی
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@forelse($flights as $flight)
|
||||
<div class="col-md-4 col-sm-6 mb-4">
|
||||
<div class="flight-card">
|
||||
<div class="flight-body">
|
||||
{{-- مسیر پرواز --}}
|
||||
<div class="flight-route">
|
||||
<div class="flight-city">
|
||||
<span>مبدأ</span>
|
||||
<strong>{{ $flight->origin }}</strong>
|
||||
</div>
|
||||
<div class="flight-line">
|
||||
<span class="plane-icon">✈</span>
|
||||
</div>
|
||||
<div class="flight-city">
|
||||
<span>مقصد</span>
|
||||
<strong>{{ $flight->destination }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- زمانها --}}
|
||||
<div class="flight-info">
|
||||
<p>🛫 حرکت: {{ $flight->departure_time?->toJalali()->format('Y/m/d H:i') }}</p>
|
||||
<p>🛬 ورود: {{ $flight->arrival_time?->toJalali()->format('Y/m/d H:i') }}</p>
|
||||
</div>
|
||||
|
||||
{{-- قیمت --}}
|
||||
<span class="flight-price">{{ number_format($flight->price) }} تومان</span>
|
||||
|
||||
<a href="{{ route('flights.show', $flight->id) }}" class="btn btn-sm btn-primary btn-block mt-3">
|
||||
مشاهده جزئیات <i class="fa fa-arrow-left"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="col-12">
|
||||
<div class="archive-empty">
|
||||
<i class="fa fa-plane"></i>
|
||||
<p>هنوز پروازی ثبت نشده است.</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-pagination">
|
||||
{{ $flights->links('pagination::bootstrap-4') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'پروازها')--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
|
||||
{{-- <div class="theme-page-section theme-page-section-gray">--}}
|
||||
|
||||
{{-- <div class="container">--}}
|
||||
|
||||
{{-- <div class="theme-page-section-header">--}}
|
||||
|
||||
{{-- <h1 class="theme-page-section-title">--}}
|
||||
{{-- پروازها--}}
|
||||
{{-- </h1>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- پرواز مورد نظر خود را انتخاب کنید.--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{-- Search --}}
|
||||
{{-- <div class="theme-search-area theme-search-area-stacked theme-search-area-white">--}}
|
||||
|
||||
{{-- <div class="theme-search-area-form">--}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-md-3">--}}
|
||||
{{-- <input--}}
|
||||
{{-- class="form-control"--}}
|
||||
{{-- type="text"--}}
|
||||
{{-- placeholder="مبدا">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-3">--}}
|
||||
{{-- <input--}}
|
||||
{{-- class="form-control"--}}
|
||||
{{-- type="text"--}}
|
||||
{{-- placeholder="مقصد">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-2">--}}
|
||||
{{-- <input--}}
|
||||
{{-- class="form-control"--}}
|
||||
{{-- type="text"--}}
|
||||
{{-- placeholder="تاریخ">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-2">--}}
|
||||
{{-- <select class="form-control">--}}
|
||||
{{-- <option>اقتصادی</option>--}}
|
||||
{{-- <option>بیزینس</option>--}}
|
||||
{{-- <option>فرست کلاس</option>--}}
|
||||
{{-- </select>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-2">--}}
|
||||
|
||||
{{-- <button class="btn btn-primary btn-block">--}}
|
||||
{{-- جستجو--}}
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- --}}
|
||||
{{-- --}}{{-- Flights --}}
|
||||
{{-- <div class="row row-col-gap">--}}
|
||||
|
||||
{{-- @forelse($flights as $flight)--}}
|
||||
|
||||
{{-- @include('components.flight', [--}}
|
||||
{{-- 'flight' => $flight--}}
|
||||
{{-- ])--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <div class="col-12">--}}
|
||||
|
||||
{{-- <div class="alert alert-info text-center">--}}
|
||||
{{-- در حال حاضر پرواز فعالی برای نمایش وجود ندارد.--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="row row-col-gap">--}}
|
||||
|
||||
{{-- @include('components.flight', [--}}
|
||||
{{-- 'airline' => 'ایران ایر',--}}
|
||||
{{-- 'from' => 'تهران',--}}
|
||||
{{-- 'to' => 'استانبول',--}}
|
||||
{{-- 'departure' => '09:30',--}}
|
||||
{{-- 'arrival' => '12:00',--}}
|
||||
{{-- 'price' => '25,000,000'--}}
|
||||
{{-- ])--}}
|
||||
|
||||
{{-- @include('components.flight', [--}}
|
||||
{{-- 'airline' => 'ماهان',--}}
|
||||
{{-- 'from' => 'تهران',--}}
|
||||
{{-- 'to' => 'دبی',--}}
|
||||
{{-- 'departure' => '14:00',--}}
|
||||
{{-- 'arrival' => '17:00',--}}
|
||||
{{-- 'price' => '18,500,000'--}}
|
||||
{{-- ])--}}
|
||||
|
||||
{{-- @include('components.flight', [--}}
|
||||
{{-- 'airline' => 'ترکیش ایرلاینز',--}}
|
||||
{{-- 'from' => 'تهران',--}}
|
||||
{{-- 'to' => 'استانبول',--}}
|
||||
{{-- 'departure' => '20:30',--}}
|
||||
{{-- 'arrival' => '23:30',--}}
|
||||
{{-- 'price' => '22,000,000'--}}
|
||||
{{-- ])--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
@endsection
|
||||
|
||||
@@ -100,108 +100,3 @@
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'جزئیات پرواز')--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
|
||||
{{-- <div class="theme-page-section theme-page-section-gray">--}}
|
||||
|
||||
{{-- <div class="container">--}}
|
||||
|
||||
{{-- <div class="theme-page-section-header">--}}
|
||||
|
||||
{{-- <h1 class="theme-page-section-title">--}}
|
||||
{{-- جزئیات پرواز--}}
|
||||
{{-- </h1>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-md-8">--}}
|
||||
|
||||
{{-- <div class="theme-search-results-item">--}}
|
||||
|
||||
{{-- <div class="theme-search-results-item-preview">--}}
|
||||
|
||||
{{-- <h3>--}}
|
||||
{{-- تهران → استانبول--}}
|
||||
{{-- </h3>--}}
|
||||
|
||||
{{-- <hr>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- شرکت هواپیمایی: ایران ایر--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- تاریخ: 1405/05/30--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- ساعت حرکت: 09:30--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- ساعت رسیدن: 12:00--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- مدت پرواز: 3 ساعت و 30 دقیقه--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- کلاس: اقتصادی--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div class="col-md-4">--}}
|
||||
|
||||
{{-- <div class="theme-search-results-item">--}}
|
||||
|
||||
{{-- <div class="theme-search-results-item-preview">--}}
|
||||
|
||||
{{-- <h4>--}}
|
||||
{{-- قیمت بلیت--}}
|
||||
{{-- </h4>--}}
|
||||
|
||||
{{-- <h2>--}}
|
||||
{{-- 25,000,000 تومان--}}
|
||||
{{-- </h2>--}}
|
||||
|
||||
{{-- <a--}}
|
||||
{{-- href="{{ route('booking.flight', $flight) }}"--}}
|
||||
{{-- class="btn btn-primary"--}}
|
||||
{{-- >--}}
|
||||
{{-- رزرو پرواز--}}
|
||||
{{-- </a>--}}
|
||||
{{-- <button class="btn btn-primary btn-block">--}}
|
||||
|
||||
{{-- رزرو پرواز--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
+535
-430
@@ -1,457 +1,562 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'صفحه اصلی | آژانس مسافرتی')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="travel-page">
|
||||
|
||||
<div class="travel-page py-5">
|
||||
<div class="container">
|
||||
|
||||
{{-- =========================
|
||||
آخرین تورها
|
||||
========================== --}}
|
||||
|
||||
<div class="section-heading text-center mb-5">
|
||||
|
||||
<h2>آخرین تورها</h2>
|
||||
|
||||
<p>
|
||||
جدیدترین تورهای ثبت شده در آژانس هواپیمایی
|
||||
</p>
|
||||
|
||||
{{-- بخش تورها --}}
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2 class="m-0">آخرین تورها</h2>
|
||||
<a href="{{ route('tours.index') }}" class="btn btn-primary btn-sm">مشاهده همه تورها</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
@forelse($tours as $tour)
|
||||
|
||||
<div class="col-md-4 col-sm-6 mb-4">
|
||||
|
||||
<div class="travel-card">
|
||||
|
||||
{{-- تصویر --}}
|
||||
<div class="travel-card shadow-sm h-100">
|
||||
<div class="travel-card-image">
|
||||
|
||||
@if($tour->image)
|
||||
|
||||
<img
|
||||
src="{{ asset('storage/' . $tour->image) }}"
|
||||
alt="{{ $tour->title ?? 'تور' }}"
|
||||
loading="lazy"
|
||||
>
|
||||
|
||||
@else
|
||||
|
||||
<img
|
||||
src="{{ asset('images/no-image.jpg') }}"
|
||||
alt="بدون تصویر"
|
||||
loading="lazy"
|
||||
>
|
||||
|
||||
@endif
|
||||
|
||||
<img
|
||||
src="{{ $tour->image ? asset('storage/' . $tour->image) : asset('assets/img/exp-page/slider/2.jpg') }}"
|
||||
alt="{{ $tour->title }}" loading="lazy">
|
||||
</div>
|
||||
|
||||
|
||||
{{-- اطلاعات تور --}}
|
||||
<div class="travel-card-body">
|
||||
|
||||
{{-- عنوان --}}
|
||||
<h3 class="travel-card-title">
|
||||
|
||||
{{ $tour->title ?? 'بدون عنوان' }}
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
{{-- مبدا --}}
|
||||
@if(!empty($tour->origin))
|
||||
|
||||
<div class="travel-route">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
مبدا:
|
||||
|
||||
{{ $tour->origin }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- مقصد --}}
|
||||
@if(!empty($tour->destination))
|
||||
|
||||
<div class="travel-route">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
مقصد:
|
||||
|
||||
{{ $tour->destination }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- اگر origin_id و destination_id داری --}}
|
||||
@if(
|
||||
empty($tour->origin) &&
|
||||
!empty($tour->origin_id)
|
||||
)
|
||||
|
||||
<div class="travel-route">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
مبدا:
|
||||
|
||||
{{ $tour->origin_id }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
@if(
|
||||
empty($tour->destination) &&
|
||||
!empty($tour->destination_id)
|
||||
)
|
||||
|
||||
<div class="travel-route">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
مقصد:
|
||||
|
||||
{{ $tour->destination_id }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- توضیحات --}}
|
||||
@php
|
||||
|
||||
$description =
|
||||
$tour->description
|
||||
?? $tour->summary
|
||||
?? null;
|
||||
|
||||
@endphp
|
||||
|
||||
|
||||
@if($description)
|
||||
|
||||
<p class="travel-card-summary">
|
||||
|
||||
{{ \Illuminate\Support\Str::limit(
|
||||
strip_tags($description),
|
||||
100
|
||||
) }}
|
||||
|
||||
</p>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- تاریخ شروع --}}
|
||||
@if(!empty($tour->start_date))
|
||||
|
||||
<div class="travel-date">
|
||||
|
||||
<i class="fa fa-calendar"></i>
|
||||
|
||||
تاریخ حرکت:
|
||||
|
||||
{{ $tour->start_date }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- تاریخ پایان --}}
|
||||
@if(!empty($tour->end_date))
|
||||
|
||||
<div class="travel-date">
|
||||
|
||||
<i class="fa fa-calendar"></i>
|
||||
|
||||
تاریخ برگشت:
|
||||
|
||||
{{ $tour->end_date }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- مدت سفر --}}
|
||||
@if(!empty($tour->duration))
|
||||
|
||||
<div class="travel-duration">
|
||||
|
||||
<i class="fa fa-clock-o"></i>
|
||||
|
||||
مدت سفر:
|
||||
|
||||
{{ $tour->duration }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- قیمت --}}
|
||||
@if(!is_null($tour->price))
|
||||
|
||||
<div class="travel-price">
|
||||
|
||||
<i class="fa fa-money"></i>
|
||||
|
||||
{{ number_format((int) $tour->price) }}
|
||||
|
||||
تومان
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- جزئیات --}}
|
||||
<a
|
||||
href="{{ route('tours.show', $tour->id) }}"
|
||||
class="travel-btn"
|
||||
>
|
||||
|
||||
مشاهده جزئیات
|
||||
|
||||
<i class="fa fa-arrow-left"></i>
|
||||
|
||||
</a>
|
||||
|
||||
<h3 class="travel-card-title">{{ $tour->title }}</h3>
|
||||
<p class="travel-card-summary">{{ Str::limit(strip_tags($tour->description ?? $tour->summary), 80) }}</p>
|
||||
<a href="{{ route('tours.show', $tour->id) }}" class="travel-btn">مشاهده جزئیات <i
|
||||
class="fa fa-arrow-left"></i></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@empty
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="empty-box text-center">
|
||||
|
||||
هنوز هیچ تور فعالی ثبت نشده است.
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-12 text-center py-4">تور فعالی یافت نشد.</div>
|
||||
@endforelse
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- صفحهبندی تورها --}}
|
||||
@if($tours->hasPages())
|
||||
|
||||
<div class="pagination-wrapper">
|
||||
|
||||
{{ $tours->links() }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
{{-- =========================
|
||||
آخرین پروازها
|
||||
========================== --}}
|
||||
|
||||
<div class="flights-section">
|
||||
|
||||
<div class="section-heading text-center mb-5">
|
||||
|
||||
<h2>
|
||||
آخرین پروازها
|
||||
</h2>
|
||||
|
||||
<p>
|
||||
جدیدترین پروازهای ثبت شده در سامانه
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
@forelse($flights as $flight)
|
||||
|
||||
<div class="col-md-4 col-sm-6 mb-4">
|
||||
|
||||
<div class="flight-card">
|
||||
|
||||
{{-- آیکون --}}
|
||||
<div class="flight-icon">
|
||||
|
||||
<i class="fa fa-plane"></i>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- عنوان --}}
|
||||
<h3 class="flight-title">
|
||||
|
||||
{{ $flight->title ?? 'بدون عنوان' }}
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
{{-- مبدا --}}
|
||||
@if(!empty($flight->origin))
|
||||
|
||||
<div class="flight-date">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
مبدا:
|
||||
|
||||
{{ $flight->origin }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- مقصد --}}
|
||||
@if(!empty($flight->destination))
|
||||
|
||||
<div class="flight-date">
|
||||
|
||||
<i class="fa fa-map-marker"></i>
|
||||
|
||||
مقصد:
|
||||
|
||||
{{ $flight->destination }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- توضیحات --}}
|
||||
@php
|
||||
|
||||
$description =
|
||||
$flight->description
|
||||
?? $flight->summary
|
||||
?? null;
|
||||
|
||||
@endphp
|
||||
|
||||
|
||||
@if($description)
|
||||
|
||||
<p class="flight-summary">
|
||||
|
||||
{{ \Illuminate\Support\Str::limit(
|
||||
strip_tags($description),
|
||||
100
|
||||
) }}
|
||||
|
||||
</p>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- تاریخ حرکت --}}
|
||||
@if(!empty($flight->departure_date))
|
||||
|
||||
<div class="flight-date">
|
||||
|
||||
<i class="fa fa-calendar"></i>
|
||||
|
||||
تاریخ حرکت:
|
||||
|
||||
{{ $flight->departure_date }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- قیمت --}}
|
||||
@if(!is_null($flight->price))
|
||||
|
||||
<div class="travel-price">
|
||||
|
||||
<i class="fa fa-money"></i>
|
||||
|
||||
{{ number_format((int) $flight->price) }}
|
||||
|
||||
تومان
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
|
||||
{{-- جزئیات --}}
|
||||
<a
|
||||
href="{{ route('flights.show', $flight->id) }}"
|
||||
class="travel-btn"
|
||||
>
|
||||
|
||||
مشاهده جزئیات
|
||||
|
||||
<i class="fa fa-arrow-left"></i>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- بخش پروازها --}}
|
||||
<div class="d-flex justify-content-between align-items-center mt-5 mb-4">
|
||||
<h2 class="m-0">آخرین پروازها</h2>
|
||||
<a href="{{ route('flights.index') }}" class="btn btn-primary btn-sm">مشاهده همه پروازها</a>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@forelse($flights as $flight)
|
||||
<div class="col-md-4 col-sm-6 mb-4">
|
||||
<div class="flight-card shadow-sm h-100 p-3">
|
||||
<h3 class="flight-title">{{ $flight->origin }} به {{ $flight->destination }}</h3>
|
||||
<p>تاریخ حرکت: {{ $flight->departure_date }}</p>
|
||||
<span class="badge badge-primary">{{ number_format($flight->price) }} تومان</span>
|
||||
<a href="{{ route('flights.show', $flight->id) }}" class="d-block mt-2">مشاهده جزئیات</a>
|
||||
</div>
|
||||
|
||||
@empty
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="empty-box text-center">
|
||||
|
||||
هنوز هیچ پرواز فعالی ثبت نشده است.
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endforelse
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- صفحهبندی پروازها --}}
|
||||
@if($flights->hasPages())
|
||||
|
||||
<div class="pagination-wrapper">
|
||||
|
||||
{{ $flights->links() }}
|
||||
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
@empty
|
||||
<div class="col-12 text-center py-4">پرواز فعالی یافت نشد.</div>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
{{--@section('title', 'صفحه اصلی | آژانس مسافرتی')--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
{{-- <div class="travel-page">--}}
|
||||
{{-- <div class="container">--}}
|
||||
|
||||
{{-- --}}{{-- بخش تورها --}}
|
||||
{{-- <div class="d-flex justify-content-between align-items-center mb-4">--}}
|
||||
{{-- <h2 class="section-title">آخرین تورها</h2>--}}
|
||||
{{-- <a href="{{ route('tours.index') }}" class="btn btn-outline-primary btn-sm">--}}
|
||||
{{-- مشاهده همه تورها <i class="fa fa-arrow-left mr-1"></i>--}}
|
||||
{{-- </a>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
{{-- @forelse($tours as $tour)--}}
|
||||
{{-- <div class="col-md-4 col-sm-6 mb-4">--}}
|
||||
{{-- --}}{{-- ... بقیه کدهای کارت تور شما ... --}}
|
||||
{{-- </div>--}}
|
||||
{{-- @empty--}}
|
||||
{{-- <div class="col-12 text-center py-5">هنوز توری ثبت نشده است.</div>--}}
|
||||
{{-- @endforelse--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- --}}{{-- بخش پروازها --}}
|
||||
{{-- <div class="d-flex justify-content-between align-items-center mt-5 mb-4">--}}
|
||||
{{-- <h2 class="section-title">آخرین پروازها</h2>--}}
|
||||
{{-- <a href="{{ route('flights.index') }}" class="btn btn-outline-primary btn-sm">--}}
|
||||
{{-- مشاهده همه پروازها <i class="fa fa-arrow-left mr-1"></i>--}}
|
||||
{{-- </a>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
{{-- @forelse($flights as $flight)--}}
|
||||
{{-- <div class="col-md-4 col-sm-6 mb-4">--}}
|
||||
{{-- --}}{{-- ... بقیه کدهای کارت پرواز شما ... --}}
|
||||
{{-- </div>--}}
|
||||
{{-- @empty--}}
|
||||
{{-- <div class="col-12 text-center py-5">هنوز پروازی ثبت نشده است.</div>--}}
|
||||
{{-- @endforelse--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
{{--@section('title', 'صفحه اصلی | آژانس مسافرتی')--}}
|
||||
|
||||
{{--@section('content')--}}
|
||||
|
||||
{{-- <div class="travel-page">--}}
|
||||
|
||||
{{-- <div class="container">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- =========================--}}
|
||||
{{-- آخرین تورها--}}
|
||||
{{-- ========================== --}}
|
||||
|
||||
{{-- <div class="section-heading text-center mb-5">--}}
|
||||
|
||||
{{-- <h2>آخرین تورها</h2>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- جدیدترین تورهای ثبت شده در آژانس هواپیمایی--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- @forelse($tours as $tour)--}}
|
||||
|
||||
{{-- <div class="col-md-4 col-sm-6 mb-4">--}}
|
||||
|
||||
{{-- <div class="travel-card">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- تصویر --}}
|
||||
{{-- <div class="travel-card-image">--}}
|
||||
|
||||
{{-- @if($tour->image)--}}
|
||||
|
||||
{{-- <img--}}
|
||||
{{-- src="{{ asset('storage/' . $tour->image) }}"--}}
|
||||
{{-- alt="{{ $tour->title ?? 'تور' }}"--}}
|
||||
{{-- loading="lazy"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- <img--}}
|
||||
{{-- src="{{ asset('assets/img/exp-page/slider/2.jpg') }}"--}}
|
||||
{{-- alt="بدون تصویر"--}}
|
||||
{{-- loading="lazy"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- اطلاعات تور --}}
|
||||
{{-- <div class="travel-card-body">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- عنوان --}}
|
||||
{{-- <h3 class="travel-card-title">--}}
|
||||
|
||||
{{-- {{ $tour->title ?? 'بدون عنوان' }}--}}
|
||||
|
||||
{{-- </h3>--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- مبدا --}}
|
||||
{{-- @if(!empty($tour->origin))--}}
|
||||
|
||||
{{-- <div class="travel-route">--}}
|
||||
|
||||
{{-- <i class="fa fa-map-marker"></i>--}}
|
||||
|
||||
{{-- مبدا:--}}
|
||||
|
||||
{{-- {{ $tour->origin }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- مقصد --}}
|
||||
{{-- @if(!empty($tour->destination))--}}
|
||||
|
||||
{{-- <div class="travel-route">--}}
|
||||
|
||||
{{-- <i class="fa fa-map-marker"></i>--}}
|
||||
|
||||
{{-- مقصد:--}}
|
||||
|
||||
{{-- {{ $tour->destination }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- @if(--}}
|
||||
{{-- empty($tour->origin) &&--}}
|
||||
{{-- !empty($tour->origin_id)--}}
|
||||
{{-- )--}}
|
||||
|
||||
{{-- <div class="travel-route">--}}
|
||||
|
||||
{{-- <i class="fa fa-map-marker"></i>--}}
|
||||
|
||||
{{-- مبدا:--}}
|
||||
|
||||
{{-- {{ $tour->origin_id }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- @if(--}}
|
||||
{{-- empty($tour->destination) &&--}}
|
||||
{{-- !empty($tour->destination_id)--}}
|
||||
{{-- )--}}
|
||||
|
||||
{{-- <div class="travel-route">--}}
|
||||
|
||||
{{-- <i class="fa fa-map-marker"></i>--}}
|
||||
|
||||
{{-- مقصد:--}}
|
||||
|
||||
{{-- {{ $tour->destination_id }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- توضیحات --}}
|
||||
{{-- @php--}}
|
||||
|
||||
{{-- $description =--}}
|
||||
{{-- $tour->description--}}
|
||||
{{-- ?? $tour->summary--}}
|
||||
{{-- ?? null;--}}
|
||||
|
||||
{{-- @endphp--}}
|
||||
|
||||
|
||||
{{-- @if($description)--}}
|
||||
|
||||
{{-- <p class="travel-card-summary">--}}
|
||||
|
||||
{{-- {{ \Illuminate\Support\Str::limit(--}}
|
||||
{{-- strip_tags($description),--}}
|
||||
{{-- 100--}}
|
||||
{{-- ) }}--}}
|
||||
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- تاریخ شروع --}}
|
||||
{{-- @if(!empty($tour->start_date))--}}
|
||||
|
||||
{{-- <div class="travel-date">--}}
|
||||
|
||||
{{-- <i class="fa fa-calendar"></i>--}}
|
||||
|
||||
{{-- تاریخ حرکت:--}}
|
||||
|
||||
{{-- {{ $tour->start_date }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- تاریخ پایان --}}
|
||||
{{-- @if(!empty($tour->end_date))--}}
|
||||
|
||||
{{-- <div class="travel-date">--}}
|
||||
|
||||
{{-- <i class="fa fa-calendar"></i>--}}
|
||||
|
||||
{{-- تاریخ برگشت:--}}
|
||||
|
||||
{{-- {{ $tour->end_date }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- مدت سفر --}}
|
||||
{{-- @if(!empty($tour->duration))--}}
|
||||
|
||||
{{-- <div class="travel-duration">--}}
|
||||
|
||||
{{-- <i class="fa fa-clock-o"></i>--}}
|
||||
|
||||
{{-- مدت سفر:--}}
|
||||
|
||||
{{-- {{ $tour->duration }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- قیمت --}}
|
||||
{{-- @if(!is_null($tour->price))--}}
|
||||
|
||||
{{-- <div class="travel-price">--}}
|
||||
|
||||
{{-- <i class="fa fa-money"></i>--}}
|
||||
|
||||
{{-- {{ number_format((int) $tour->price) }}--}}
|
||||
|
||||
{{-- تومان--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- جزئیات --}}
|
||||
{{-- <a--}}
|
||||
{{-- href="{{ route('tours.show', $tour->id) }}"--}}
|
||||
{{-- class="travel-btn"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- مشاهده جزئیات--}}
|
||||
|
||||
{{-- <i class="fa fa-arrow-left"></i>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <div class="col-md-12">--}}
|
||||
|
||||
{{-- <div class="empty-box text-center">--}}
|
||||
|
||||
{{-- هنوز هیچ تور فعالی ثبت نشده است.--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- صفحهبندی تورها --}}
|
||||
{{-- @if($tours->hasPages())--}}
|
||||
|
||||
{{-- <div class="pagination-wrapper">--}}
|
||||
|
||||
{{-- {{ $tours->links() }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- =========================--}}
|
||||
{{-- آخرین پروازها--}}
|
||||
{{-- ========================== --}}
|
||||
|
||||
{{-- <div class="flights-section">--}}
|
||||
|
||||
{{-- <div class="section-heading text-center mb-5">--}}
|
||||
|
||||
{{-- <h2>--}}
|
||||
{{-- آخرین پروازها--}}
|
||||
{{-- </h2>--}}
|
||||
|
||||
{{-- <p>--}}
|
||||
{{-- جدیدترین پروازهای ثبت شده در سامانه--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- @forelse($flights as $flight)--}}
|
||||
|
||||
{{-- <div class="col-md-4 col-sm-6 mb-4">--}}
|
||||
|
||||
{{-- <div class="flight-card">--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- آیکون --}}
|
||||
{{-- <div class="flight-icon">--}}
|
||||
|
||||
{{-- <i class="fa fa-plane"></i>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- عنوان --}}
|
||||
{{-- <h3 class="flight-title">--}}
|
||||
|
||||
{{-- {{ $flight->title ?? 'بدون عنوان' }}--}}
|
||||
|
||||
{{-- </h3>--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- مبدا --}}
|
||||
{{-- @if(!empty($flight->origin))--}}
|
||||
|
||||
{{-- <div class="flight-date">--}}
|
||||
|
||||
{{-- <i class="fa fa-map-marker"></i>--}}
|
||||
|
||||
{{-- مبدا:--}}
|
||||
|
||||
{{-- {{ $flight->origin }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- مقصد --}}
|
||||
{{-- @if(!empty($flight->destination))--}}
|
||||
|
||||
{{-- <div class="flight-date">--}}
|
||||
|
||||
{{-- <i class="fa fa-map-marker"></i>--}}
|
||||
|
||||
{{-- مقصد:--}}
|
||||
|
||||
{{-- {{ $flight->destination }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- توضیحات --}}
|
||||
{{-- @php--}}
|
||||
|
||||
{{-- $description =--}}
|
||||
{{-- $flight->description--}}
|
||||
{{-- ?? $flight->summary--}}
|
||||
{{-- ?? null;--}}
|
||||
|
||||
{{-- @endphp--}}
|
||||
|
||||
|
||||
{{-- @if($description)--}}
|
||||
|
||||
{{-- <p class="flight-summary">--}}
|
||||
|
||||
{{-- {{ \Illuminate\Support\Str::limit(--}}
|
||||
{{-- strip_tags($description),--}}
|
||||
{{-- 100--}}
|
||||
{{-- ) }}--}}
|
||||
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- تاریخ حرکت --}}
|
||||
{{-- @if(!empty($flight->departure_date))--}}
|
||||
|
||||
{{-- <div class="flight-date">--}}
|
||||
|
||||
{{-- <i class="fa fa-calendar"></i>--}}
|
||||
|
||||
{{-- تاریخ حرکت:--}}
|
||||
|
||||
{{-- {{ $flight->departure_date }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- قیمت --}}
|
||||
{{-- @if(!is_null($flight->price))--}}
|
||||
|
||||
{{-- <div class="travel-price">--}}
|
||||
|
||||
{{-- <i class="fa fa-money"></i>--}}
|
||||
|
||||
{{-- {{ number_format((int) $flight->price) }}--}}
|
||||
|
||||
{{-- تومان--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- جزئیات --}}
|
||||
{{-- <a--}}
|
||||
{{-- href="{{ route('flights.show', $flight->id) }}"--}}
|
||||
{{-- class="travel-btn"--}}
|
||||
{{-- >--}}
|
||||
|
||||
{{-- مشاهده جزئیات--}}
|
||||
|
||||
{{-- <i class="fa fa-arrow-left"></i>--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @empty--}}
|
||||
|
||||
{{-- <div class="col-md-12">--}}
|
||||
|
||||
{{-- <div class="empty-box text-center">--}}
|
||||
|
||||
{{-- هنوز هیچ پرواز فعالی ثبت نشده است.--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endforelse--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
|
||||
{{-- --}}{{----}}{{-- صفحهبندی پروازها --}}
|
||||
{{-- @if($flights->hasPages())--}}
|
||||
|
||||
{{-- <div class="pagination-wrapper">--}}
|
||||
|
||||
{{-- {{ $flights->links() }}--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- @endif--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{--@endsection--}}
|
||||
|
||||
@@ -18,10 +18,12 @@
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/weather-icons.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/bootstrap.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/plugins/bootstrap/css/bootstrap.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/account.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/archive.css') }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/custom.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/auth.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/styles.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/custom.css') }}">
|
||||
|
||||
{{-- صفحههایی که CSS اختصاصی دارند --}}
|
||||
@stack('styles')
|
||||
@@ -33,9 +35,9 @@
|
||||
@include('layouts.header')
|
||||
|
||||
{{-- Navbar --}}
|
||||
@include('layouts.navbar')
|
||||
{{--@include('layouts.navbar')--}}
|
||||
|
||||
|
||||
{{-- محتوای اصلی هر صفحه --}}
|
||||
@yield('content')
|
||||
|
||||
{{-- Footer --}}
|
||||
@@ -64,158 +66,9 @@
|
||||
<script src="{{ asset('assets/js/fitvid.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/youtube-bg.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/custom.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/chart.js') }}"></script>
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{{-- resources/views/layouts/app.blade.php --}}
|
||||
{{-- <!DOCTYPE html>--}}
|
||||
{{--<html lang="fa" dir="rtl">--}}
|
||||
{{--<head>--}}
|
||||
{{-- <meta charset="UTF-8">--}}
|
||||
{{-- <meta name="viewport" content="width=device-width, initial-scale=1.0">--}}
|
||||
{{-- <meta name="csrf-token" content="{{ csrf_token() }}">--}}
|
||||
{{-- <title>@yield('title', 'آژانس مسافرتی')</title>--}}
|
||||
{{-- @vite(['resources/css/app.css', 'resources/js/app.js'])--}}
|
||||
{{-- @stack('styles')--}}
|
||||
{{--</head>--}}
|
||||
{{--<body>--}}
|
||||
|
||||
{{-- ===== ناوبری بالا ===== --}}
|
||||
{{--<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">--}}
|
||||
{{-- <div class="container">--}}
|
||||
{{-- <a class="navbar-brand" href="{{ route('home') }}">آژانس پرواز</a>--}}
|
||||
{{-- <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNav">--}}
|
||||
{{-- <span class="navbar-toggler-icon"></span>--}}
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- <div class="collapse navbar-collapse" id="mainNav">--}}
|
||||
{{-- <ul class="navbar-nav ms-auto">--}}
|
||||
{{-- <li class="nav-item"><a class="nav-link" href="{{ route('tours.index') }}">تورها</a></li>--}}
|
||||
{{-- <li class="nav-item"><a class="nav-link" href="{{ route('flights.index') }}">پروازها</a></li>--}}
|
||||
{{-- <li class="nav-item"><a class="nav-link" href="{{ route('about') }}">درباره ما</a></li>--}}
|
||||
{{-- <li class="nav-item"><a class="nav-link" href="{{ route('contact') }}">تماس با ما</a></li>--}}
|
||||
{{-- </ul>--}}
|
||||
|
||||
{{-- --}}{{-- منوی کاربر --}}
|
||||
{{-- <ul class="navbar-nav ms-auto">--}}
|
||||
{{-- @auth--}}
|
||||
{{-- <li class="nav-item dropdown">--}}
|
||||
{{-- <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">--}}
|
||||
{{-- {{ Auth::user()->name }}--}}
|
||||
{{-- </a>--}}
|
||||
{{-- <ul class="dropdown-menu dropdown-menu-end">--}}
|
||||
{{-- <li><a class="dropdown-item" href="{{ route('dashboard') }}">پیشخوان</a></li>--}}
|
||||
{{-- <li><a class="dropdown-item" href="{{ route('account.bookings') }}">رزروهای من</a></li>--}}
|
||||
{{-- <li><a class="dropdown-item" href="{{ route('account.favorites') }}">علاقهمندیها</a></li>--}}
|
||||
{{-- <li><hr class="dropdown-divider"></li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <form method="POST" action="{{ route('logout') }}">--}}
|
||||
{{-- @csrf--}}
|
||||
{{-- <button class="dropdown-item" type="submit">خروج</button>--}}
|
||||
{{-- </form>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- </ul>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @else--}}
|
||||
{{-- <a href="{{ route('login') }}" class="btn btn-outline-light me-2">ورود</a>--}}
|
||||
{{-- <a href="{{ route('register') }}" class="btn btn-primary">ثبتنام</a>--}}
|
||||
{{-- @endauth--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{--</nav>--}}
|
||||
|
||||
{{-- ===== محتوای صفحه ===== --}}
|
||||
{{--<main class="py-5 mt-5">--}}
|
||||
{{-- @yield('content')--}}
|
||||
{{--</main>--}}
|
||||
|
||||
{{-- ===== فوتر ===== --}}
|
||||
{{--<footer class="bg-dark text-light py-4 mt-5">--}}
|
||||
{{-- <div class="container text-center">--}}
|
||||
{{-- <p class="mb-0">© {{ date('Y') }} — آژانس مسافرتی | تمامی حقوق محفوظ است</p>--}}
|
||||
{{-- </div>--}}
|
||||
{{--</footer>--}}
|
||||
|
||||
{{--@stack('scripts')--}}
|
||||
{{--</body>--}}
|
||||
{{--</html>--}}
|
||||
|
||||
{{--<!DOCTYPE html>--}}
|
||||
{{--<html lang="fa" dir="rtl">--}}
|
||||
|
||||
{{--<head>--}}
|
||||
{{-- <meta charset="UTF-8">--}}
|
||||
{{-- <meta name="viewport" content="width=device-width, initial-scale=1.0">--}}
|
||||
|
||||
{{-- <title>قالب رزرواسیون</title>--}}
|
||||
|
||||
{{-- <link rel="stylesheet" href="{{ asset('assets/css/font-awesome.css') }}">--}}
|
||||
{{-- <link rel="stylesheet" href="{{ asset('assets/css/lineicons.css') }}">--}}
|
||||
{{-- <link rel="stylesheet" href="{{ asset('assets/css/weather-icons.css') }}">--}}
|
||||
{{-- <link rel="stylesheet" href="{{ asset('assets/css/bootstrap.css') }}">--}}
|
||||
{{-- <link rel="stylesheet" href="{{ asset('assets/css/styles.css') }}">--}}
|
||||
{{--</head>--}}
|
||||
|
||||
{{--<body>--}}
|
||||
|
||||
{{--@include('layouts.header')--}}
|
||||
|
||||
{{--@include('layouts.navbar')--}}
|
||||
|
||||
{{--@yield('content')--}}
|
||||
|
||||
{{--@include('layouts.footer')--}}
|
||||
|
||||
|
||||
{{--<script src="{{ asset('assets/js/jquery.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/moment.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/bootstrap.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/owl-carousel.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/blur-area.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/icheck.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/gmap.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/magnific-popup.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/ion-range-slider.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/sticky-kit.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/smooth-scroll.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/fotorama.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/bs-datepicker.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/typeahead.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/quantity-selector.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/countdown.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/window-scroll-action.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/fitvid.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/youtube-bg.js') }}"></script>--}}
|
||||
{{--<script src="{{ asset('assets/js/custom.js') }}"></script>--}}
|
||||
|
||||
{{--</body>--}}
|
||||
|
||||
{{--</html>--}}
|
||||
|
||||
{{--<!DOCTYPE html>--}}
|
||||
{{--<html lang="fa" dir="rtl">--}}
|
||||
{{--<head>--}}
|
||||
{{-- <meta charset="UTF-8">--}}
|
||||
{{-- <meta name="viewport" content="width=device-width, initial-scale=1.0">--}}
|
||||
{{-- <title>@yield('title', 'آژانس هواپیمایی')</title>--}}
|
||||
{{-- @include('layouts.icon')--}}
|
||||
{{-- <link rel="stylesheet" href="{{ asset('css/app.css') }}">--}}
|
||||
{{-- @stack('styles')--}}
|
||||
{{--</head>--}}
|
||||
{{--<body>--}}
|
||||
{{--@include('layouts.header')--}}
|
||||
{{--@include('layouts.navbar')--}}
|
||||
|
||||
{{--<main>--}}
|
||||
{{-- @yield('content')--}}
|
||||
{{--</main>--}}
|
||||
|
||||
{{--@include('layouts.footer')--}}
|
||||
{{--@stack('scripts')--}}
|
||||
{{--</body>--}}
|
||||
{{--</html>--}}
|
||||
|
||||
|
||||
@@ -149,53 +149,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- Newsletter --}}
|
||||
{{-- <div class="col-md-4">--}}
|
||||
|
||||
{{-- <div class="theme-footer-section theme-footer-section-subscribe bg-grad">--}}
|
||||
|
||||
{{-- <div--}}
|
||||
{{-- class="theme-footer-section-subscribe-bg"--}}
|
||||
{{-- style="background-image:url('{{ asset('img/footer/footer_subscribe_bg.png') }}');">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="theme-footer-section-subscribe-content">--}}
|
||||
|
||||
{{-- <h5 class="theme-footer-section-title">--}}
|
||||
{{-- از پیشنهادهای ویژه باخبر شوید--}}
|
||||
{{-- </h5>--}}
|
||||
|
||||
{{-- <p class="text-muted">--}}
|
||||
{{-- ایمیل خود را وارد کنید تا پیشنهادهای ویژه را دریافت کنید.--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <form>--}}
|
||||
|
||||
{{-- <div class="form-group">--}}
|
||||
|
||||
{{-- <input--}}
|
||||
{{-- class="form-control theme-footer-subscribe-form-control"--}}
|
||||
{{-- type="email"--}}
|
||||
{{-- placeholder="ایمیل شما">--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <button--}}
|
||||
{{-- class="btn btn-primary-invert btn-shadow text-upcase theme-footer-subscribe-btn"--}}
|
||||
{{-- type="submit">--}}
|
||||
|
||||
{{-- عضویت--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </form>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -256,156 +209,3 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{--<footer class="theme-footer">--}}
|
||||
{{-- <div class="theme-footer-area theme-footer-area-dark">--}}
|
||||
{{-- <div class="container-fluid">--}}
|
||||
|
||||
{{-- <div class="row row-col-gap">--}}
|
||||
|
||||
{{-- <div class="col-md-4">--}}
|
||||
{{-- <div class="theme-footer-section theme-footer-">--}}
|
||||
{{-- <h5 class="theme-footer-section-title">سفر کنید</h5>--}}
|
||||
|
||||
{{-- <ul class="theme-footer-section-list">--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">کشورها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">مناطق</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">شهرها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">نواحی</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">فرودگاه ها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">هتل</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">مکان های مورد علاقه</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- </ul>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-4">--}}
|
||||
{{-- <div class="theme-footer-section theme-footer-">--}}
|
||||
{{-- <h5 class="theme-footer-section-title">کتاب</h5>--}}
|
||||
|
||||
{{-- <ul class="theme-footer-section-list">--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">آپارتمان ها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">استراحتگاه ها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">ویلاها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">خوابگاه ها</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">رستوران</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">مهمانخانه</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- <li>--}}
|
||||
{{-- <a href="#">هتل های زنجیره ای</a>--}}
|
||||
{{-- </li>--}}
|
||||
{{-- </ul>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-4">--}}
|
||||
{{-- <div class="theme-footer-section theme-footer-section-subscribe bg-grad _mt-mob-30">--}}
|
||||
|
||||
{{-- <div class="theme-footer-section-subscribe-bg"--}}
|
||||
{{-- style="background-image:url('{{ asset('assets/img/footer/footer_subscribe_bg.png') }}');">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="theme-footer-section-subscribe-content">--}}
|
||||
|
||||
{{-- <h5 class="theme-footer-section-title">--}}
|
||||
{{-- تا 50 درصد از سفر بعدی خود صرفه جویی کنید--}}
|
||||
{{-- </h5>--}}
|
||||
|
||||
{{-- <p class="text-muted">--}}
|
||||
{{-- برای باز کردن قفل معاملات مخفی ما مشترک شوید--}}
|
||||
{{-- </p>--}}
|
||||
|
||||
{{-- <form>--}}
|
||||
{{-- <div class="form-group">--}}
|
||||
{{-- <input--}}
|
||||
{{-- class="form-control theme-footer-subscribe-form-control"--}}
|
||||
{{-- type="email"--}}
|
||||
{{-- placeholder="ایمیل خود را اینجا تایپ کنید">--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <button--}}
|
||||
{{-- class="btn btn-primary-invert btn-shadow text-upcase theme-footer-subscribe-btn"--}}
|
||||
{{-- type="submit">--}}
|
||||
{{-- معاملات دریافت کنید--}}
|
||||
{{-- </button>--}}
|
||||
{{-- </form>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="theme-copyright">--}}
|
||||
{{-- <div class="container-fluid">--}}
|
||||
|
||||
{{-- <div class="row">--}}
|
||||
|
||||
{{-- <div class="col-md-6">--}}
|
||||
{{-- <p class="theme-copyright-text">--}}
|
||||
{{-- حق چاپ © 1400--}}
|
||||
{{-- <a href="#">Bookify</a>--}}
|
||||
{{-- . تمامی حقوق محفوظ است.--}}
|
||||
{{-- </p>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <div class="col-md-6">--}}
|
||||
{{-- <ul class="theme-copyright-social">--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="fa fa-facebook" href="#"></a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="fa fa-google" href="#"></a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="fa fa-twitter" href="#"></a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="fa fa-youtube-play" href="#"></a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- <li>--}}
|
||||
{{-- <a class="fa fa-instagram" href="#"></a>--}}
|
||||
{{-- </li>--}}
|
||||
|
||||
{{-- </ul>--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{--</footer>--}}
|
||||
|
||||
@@ -107,57 +107,6 @@
|
||||
|
||||
</nav>
|
||||
|
||||
{{-- @auth--}}
|
||||
{{-- <!-- Account Btn -->--}}
|
||||
{{-- <button class="group relative flex-center py-2 px-4 app-border rounded-full app-hover delay-75">--}}
|
||||
{{-- <a href="{{ route('account.edit-profile.index') }}" class="flex items-center gap-x-1">--}}
|
||||
{{-- <svg class="size-5">--}}
|
||||
{{-- <use href="#user"/>--}}
|
||||
{{-- </svg>--}}
|
||||
{{-- <p>حساب کاربری</p>--}}
|
||||
{{-- </a>--}}
|
||||
{{-- <div--}}
|
||||
{{-- class="absolute dark:border-none border border-gray-100 w-52 p-2 bg-white text-gray-900 dark:text-gray-100 flex flex-col gap-y-3 opacity-0 invisible group-hover:opacity-100 group-hover:visible group-hover:top-12 transition-all delay-100 dark:bg-gray-700 top-20 rounded-lg text-base shadow child:transition-all duration-300 child:py-1.5 child:px-2 z-30 child:rounded-lg child:w-full">--}}
|
||||
{{-- <a href="{{ route('account.orders')}}"--}}
|
||||
{{-- class="flex items-center gap-x-2 hover:bg-blue-500 hover:text-gray-100">--}}
|
||||
{{-- <svg class="h-5 w-5">--}}
|
||||
{{-- <use href="#user"></use>--}}
|
||||
{{-- </svg>--}}
|
||||
{{-- سفارشات من--}}
|
||||
{{-- </a>--}}
|
||||
{{-- <a href="{{ route('account.edit-profile.index') }}"--}}
|
||||
{{-- class="flex items-center gap-x-2 hover:bg-blue-500 hover:text-gray-100">--}}
|
||||
{{-- <svg class="h-5 w-5">--}}
|
||||
{{-- <use href="#cog"></use>--}}
|
||||
{{-- </svg>--}}
|
||||
{{-- اطلاعات کاربری--}}
|
||||
{{-- </a>--}}
|
||||
{{-- <a href="{{ route('auth.logout') }}"--}}
|
||||
{{-- class="flex items-center gap-x-2 hover:bg-red-500 dark:hover:bg-red-500 hover:text-gray-100">--}}
|
||||
{{-- <svg class="h-5 w-5">--}}
|
||||
{{-- <use href="#arrow-left-end"></use>--}}
|
||||
{{-- </svg>--}}
|
||||
{{-- خروج از حساب--}}
|
||||
{{-- </a>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </button>--}}
|
||||
{{-- @else--}}
|
||||
|
||||
<!-- LOGIN -->
|
||||
{{-- <button class="flex-center py-2 px-4 app-border rounded-full app-hover">--}}
|
||||
{{-- <a href="{{route('auth.login.index')}}" class="flex items-center gap-x-2">--}}
|
||||
{{-- <p>ورود | ثبتنام</p>--}}
|
||||
{{-- <svg class="size-5">--}}
|
||||
{{-- <use href="#arrow-left-end"/>--}}
|
||||
{{-- </svg>--}}
|
||||
{{-- </a>--}}
|
||||
{{-- </button>--}}
|
||||
{{-- @endauth--}}
|
||||
|
||||
|
||||
{{-- =========================================
|
||||
سمت چپ Navbar
|
||||
========================================= --}}
|
||||
|
||||
<div class="travel-navbar-actions">
|
||||
|
||||
@@ -217,7 +166,6 @@
|
||||
|
||||
|
||||
{{-- نظرات قبلی --}}
|
||||
{{-- فعلاً اگر route نظرات را ساختهای فعالش کن --}}
|
||||
|
||||
@if(Route::has('account.comments'))
|
||||
|
||||
@@ -303,82 +251,6 @@
|
||||
</button>
|
||||
|
||||
</div>
|
||||
{{-- <div class="travel-navbar-actions">--}}
|
||||
|
||||
{{-- @auth()--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- کاربر وارد نشده --}}
|
||||
|
||||
{{-- <a href="{{ route('auth.login.index') }}" class="travel-login">--}}
|
||||
|
||||
{{-- <i class="fa fa-sign-in"></i>--}}
|
||||
|
||||
{{-- ورود--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- <a href="{{ route('auth.register.index') }}" class="travel-register">--}}
|
||||
|
||||
{{-- <i class="fa fa-user-plus"></i>--}}
|
||||
|
||||
{{-- ثبتنام--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- @else--}}
|
||||
|
||||
{{-- --}}{{-- کاربر وارد شده --}}
|
||||
|
||||
{{-- <a href="{{ route('account.index') }}" class="travel-login">--}}
|
||||
|
||||
{{-- <i class="fa fa-user"></i>--}}
|
||||
|
||||
{{-- حساب کاربری--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- <a href="{{ route('auth.logout') }}" class="travel-logout">--}}
|
||||
|
||||
{{-- <i class="fa fa-sign-out"></i>--}}
|
||||
|
||||
{{-- خروج--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
{{-- @endguest--}}
|
||||
|
||||
|
||||
{{-- <button--}}
|
||||
{{-- type="button"--}}
|
||||
{{-- class="travel-mobile-toggle"--}}
|
||||
{{-- aria-label="منو">--}}
|
||||
|
||||
{{-- <i class="fa fa-bars"></i>--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="travel-navbar-actions">--}}
|
||||
|
||||
{{-- <a href="{{ route('auth') }}" class="travel-login">--}}
|
||||
|
||||
{{-- <i class="fa fa-user"></i>--}}
|
||||
|
||||
{{-- ورود / ثبتنام--}}
|
||||
|
||||
{{-- </a>--}}
|
||||
|
||||
|
||||
{{-- <button--}}
|
||||
{{-- type="button"--}}
|
||||
{{-- class="travel-mobile-toggle"--}}
|
||||
{{-- aria-label="منو">--}}
|
||||
|
||||
{{-- <i class="fa fa-bars"></i>--}}
|
||||
|
||||
{{-- </button>--}}
|
||||
|
||||
{{-- </div>--}}
|
||||
|
||||
</div>
|
||||
|
||||
@@ -495,14 +367,3 @@
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
{{--<meta charset="UTF-8">--}}
|
||||
{{--<meta name="viewport" content="width=device-width, initial-scale=1.0">--}}
|
||||
|
||||
{{--<title>@yield('title', 'Dornica')</title>--}}
|
||||
|
||||
{{--<link rel="stylesheet" href="{{ asset('assets/css/font-awesome.css') }}">--}}
|
||||
{{--<link rel="stylesheet" href="{{ asset('assets/css/lineicons.css') }}">--}}
|
||||
{{--<link rel="stylesheet" href="{{ asset('assets/css/weather-icons.css') }}">--}}
|
||||
{{--<link rel="stylesheet" href="{{ asset('assets/css/bootstrap.css') }}">--}}
|
||||
{{--<link rel="stylesheet" href="{{ asset('assets/css/styles.css') }}">--}}
|
||||
|
||||
@@ -1,94 +1,72 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'لیست تورها')
|
||||
@section('title', 'آرشیو تورها')
|
||||
|
||||
@push('styles')
|
||||
<link rel="stylesheet" href="{{ asset('assets/css/archive.css') }}">
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="archive-page">
|
||||
<div class="container">
|
||||
|
||||
{{-- استایل دکمه علاقهمندی (مناسب برای کارتها) --}}
|
||||
<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)
|
||||
@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 class="archive-header">
|
||||
<h4><i class="fa fa-plane mr-2"></i> آرشیو تورها</h4>
|
||||
<a href="{{ route('index') }}" class="btn-back">
|
||||
<i class="fa fa-home"></i> بازگشت به صفحه اصلی
|
||||
</a>
|
||||
</div>
|
||||
@empty
|
||||
<p>تور فعالی یافت نشد.</p>
|
||||
@endforelse
|
||||
|
||||
<div class="row">
|
||||
@forelse($tours as $tour)
|
||||
<div class="col-md-4 col-sm-6 mb-4">
|
||||
<div class="tour-card">
|
||||
<div class="tour-image-wrap">
|
||||
{{-- دکمه علاقهمندی (در صورت لاگین بودن کاربر) --}}
|
||||
@auth
|
||||
<form action="{{ route('favorites.toggle', $tour->id) }}" method="POST" style="position: absolute; top: 10px; right: 10px; z-index: 10;">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-sm" style="background: rgba(255,255,255,0.8); border-radius: 50%; border:none; padding: 5px 10px;">
|
||||
<i class="fa {{ $tour->isFavoritedBy(auth()->user()) ? 'fa-heart text-danger' : 'fa-heart-o' }}"></i>
|
||||
</button>
|
||||
</form>
|
||||
@endauth
|
||||
|
||||
@if($tour->image)
|
||||
<img src="{{ asset('storage/' . $tour->image) }}" alt="{{ $tour->title }}">
|
||||
@else
|
||||
<img src="{{ asset('assets/img/exp-page/slider/2.jpg') }}" alt="بدون تصویر">
|
||||
@endif
|
||||
</div>
|
||||
<div class="tour-body">
|
||||
<h5 class="tour-title">
|
||||
<a href="{{ route('tours.show', $tour->id) }}">{{ $tour->title }}</a>
|
||||
</h5>
|
||||
<p class="tour-desc">{{ Str::limit(strip_tags($tour->description), 80) }}</p>
|
||||
<div class="tour-footer">
|
||||
<span class="tour-price">{{ number_format($tour->price) }} تومان</span>
|
||||
<a href="{{ route('tours.show', $tour->id) }}" class="text-primary">
|
||||
جزئیات <i class="fa fa-arrow-left"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<div class="col-12">
|
||||
<div class="archive-empty">
|
||||
<i class="fa fa-map-marker"></i>
|
||||
<p>هنوز توری ثبت نشده است.</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
|
||||
<div class="archive-pagination">
|
||||
{{ $tours->links('pagination::bootstrap-4') }}
|
||||
</div>
|
||||
</div>
|
||||
</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,740 +1,146 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', $tour->title)
|
||||
|
||||
@section('content')
|
||||
<div class="container py-5">
|
||||
|
||||
<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;
|
||||
}
|
||||
{{-- پیام موفقیت--}}
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success alert-dismissible fade show d-flex align-items-center shadow-sm"
|
||||
role="alert">
|
||||
<i class="bi bi-check-circle-fill me-2"></i>
|
||||
{{ session('success') }}
|
||||
<button type="button" class="btn-close ms-auto" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
.travel-favorite-btn:hover,
|
||||
.travel-favorite-btn.active {
|
||||
background: #e0245e;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
<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">
|
||||
{{-- کارت اطلاعات تور --}}
|
||||
<div class="card shadow-lg border-0 rounded-4 mb-4">
|
||||
<div class="card-body p-4 p-md-5">
|
||||
{{-- ردیف عنوان و دکمه علاقهمندی --}}
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<h1 class="card-title h3 fw-bold mb-0 d-flex align-items-center">
|
||||
<span class="badge bg-info bg-opacity-10 text-info p-2 me-2 rounded">
|
||||
<i class="bi bi-airplane"></i>
|
||||
</span>
|
||||
{{ $tour->title }}
|
||||
</h1>
|
||||
|
||||
{{-- دکمه علاقهمندی --}}
|
||||
{{-- دکمه علاقهمندی --}}
|
||||
@auth
|
||||
<form action="{{ route('favorites.toggle') }}" method="POST" class="mb-3">
|
||||
<form action="{{ route('favorites.toggle') }}" method="POST" class="m-0">
|
||||
@csrf
|
||||
<input type="hidden" name="favoritable_type" value="{{ \App\Models\Tour::class }}">
|
||||
<input type="hidden" name="favoritable_type" value="App\Models\Tour">
|
||||
<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 type="submit"
|
||||
class="btn {{ $tour->isFavoritedBy(auth()->user()) ? 'btn-outline-danger' : 'btn-outline-primary' }} rounded-pill px-4">
|
||||
<i class="bi {{ $tour->isFavoritedBy(auth()->user()) ? 'bi-heart-fill' : 'bi-heart' }} me-1"></i>
|
||||
{{ $tour->isFavoritedBy(auth()->user()) ? 'پسندیدم' : 'افزودن به علاقهمندی' }}
|
||||
</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">
|
||||
|
||||
{{-- نوع سفر --}}
|
||||
<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>
|
||||
|
||||
<p class="card-text text-muted fs-5 mb-4 line-h-8">{{ $tour->description }}</p>
|
||||
<div
|
||||
class="d-inline-flex align-items-center gap-2 bg-primary bg-opacity-10 text-primary fw-bold px-4 py-2 rounded-3">
|
||||
<i class="bi bi-tag-fill"></i>
|
||||
<span>{{ number_format($tour->price) }} تومان</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- نظرات کاربران --}}
|
||||
<div class="card shadow-lg border-0 rounded-4 mb-4">
|
||||
<div class="card-body p-4 p-md-5">
|
||||
<div class="d-flex justify-content-between align-items-center border-bottom pb-3 mb-4">
|
||||
<h3 class="h5 fw-bold mb-0 d-flex align-items-center">
|
||||
<span class="bg-purple bg-opacity-10 text-purple p-2 me-2 rounded-3">
|
||||
<i class="bi bi-people-fill"></i>
|
||||
</span>
|
||||
نظرات کاربران
|
||||
</h3>
|
||||
<span class="badge bg-purple bg-opacity-10 text-purple rounded-pill">
|
||||
{{ $tour->comments_count ?? $tour->comments->count() }} نظر
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="d-flex flex-column gap-3">
|
||||
@forelse($tour->comments as $comment)
|
||||
<div class="p-3 rounded-4 bg-light border">
|
||||
<div class="d-flex justify-content-between align-items-center mb-2 flex-wrap gap-2">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<div
|
||||
class="rounded-circle bg-gradient-primary d-flex align-items-center justify-content-center text-white fw-bold"
|
||||
style="width:40px;height:40px;">
|
||||
{{ mb_strtoupper(mb_substr($comment->user?->first_name ?? 'م', 0, 1)) }}
|
||||
</div>
|
||||
<strong
|
||||
class="text-dark">{{ $comment->user?->first_name }} {{ $comment->user?->last_name }}</strong>
|
||||
</div>
|
||||
<small class="text-muted">
|
||||
<i class="bi bi-clock me-1"></i>{{ $comment->created_at->diffForHumans() }}
|
||||
</small>
|
||||
</div>
|
||||
<p class="mb-0 text-muted">{{ $comment->body }}</p>
|
||||
</div>
|
||||
@empty
|
||||
<div class="text-center py-5">
|
||||
<div
|
||||
class="bg-light rounded-circle d-flex align-items-center justify-content-center mx-auto mb-3"
|
||||
style="width:60px;height:60px;">
|
||||
<i class="bi bi-chat-dots fs-2 text-muted"></i>
|
||||
</div>
|
||||
<p class="text-muted mb-0">هنوز نظری ثبت نشده است — اولین نفر باش! 🎉</p>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- فرم ثبت نظر --}}
|
||||
@auth
|
||||
<div class="card shadow-lg border-0 rounded-4 mb-4">
|
||||
<div class="card-body p-4 p-md-5">
|
||||
<h2 class="card-title h4 fw-bold mb-4 d-flex align-items-center">
|
||||
<span class="bg-primary bg-opacity-10 text-primary p-2 me-2 rounded-3">
|
||||
<i class="bi bi-chat-left-text-fill"></i>
|
||||
</span>
|
||||
ثبت نظر شما
|
||||
</h2>
|
||||
|
||||
@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('comments.tour.store', $tour->id) }}" method="POST">
|
||||
@csrf
|
||||
<div class="mb-3">
|
||||
<textarea name="body" class="form-control" rows="4"
|
||||
placeholder="نظر خود را درباره این تور بنویسید..." required></textarea>
|
||||
@error('body')
|
||||
<span class="text-danger small mt-1 d-block">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary px-4 rounded-pill">
|
||||
<i class="bi bi-send-fill me-1"></i> ثبت نظر
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="alert alert-warning text-center">
|
||||
برای ثبت نظر لطفاً <a href="{{ route('auth.login.index') }}" class="alert-link">وارد شوید</a>.
|
||||
</div>
|
||||
@endauth
|
||||
|
||||
</div>
|
||||
|
||||
@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')--}}
|
||||
|
||||
{{--@section('title', $tour->name)--}}
|
||||
|
||||
{{--@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>--}}
|
||||
{{-- <p class="text-muted">{{ $tour->description }}</p>--}}
|
||||
{{-- <hr>--}}
|
||||
{{-- <div class="row">--}}
|
||||
{{-- <div class="col-md-3"><strong>مبدأ:</strong> {{ $tour->origin->name ?? '—' }}</div>--}}
|
||||
{{-- <div class="col-md-3"><strong>مقصد:</strong> {{ $tour->destination->name ?? '—' }}</div>--}}
|
||||
{{-- <div class="col-md-3"><strong>تاریخ رفت:</strong> {{ $tour->start_date }}</div>--}}
|
||||
{{-- <div class="col-md-3"><strong>بازگشت:</strong> {{ $tour->end_date }}</div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="row mt-3">--}}
|
||||
{{-- <div class="col-md-4"><strong>قیمت:</strong> {{ number_format($tour->price) }} تومان</div>--}}
|
||||
{{-- <div class="col-md-4"><strong>ظرفیت:</strong> {{ $tour->capacity }} نفر</div>--}}
|
||||
{{-- <div class="col-md-4"><strong>موجودی:</strong> {{ $tour->available_seats ?? $tour->capacity }} نفر--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <hr>--}}
|
||||
{{-- <p>{{ $tour->description }}</p>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </section>--}}
|
||||
|
||||
{{-- --}}{{----}}{{-- ===== فرم رزرو تور ===== --}}
|
||||
{{-- @auth--}}
|
||||
{{-- <section class="pb-5">--}}
|
||||
{{-- <div class="container">--}}
|
||||
{{-- <div class="card shadow-sm">--}}
|
||||
{{-- <div class="card-header bg-success text-white">--}}
|
||||
{{-- رزرو تور {{ $tour->name }}--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <div class="card-body">--}}
|
||||
{{-- <form action="{{ route('booking.store', $tour) }}" method="POST">--}}
|
||||
{{-- @csrf--}}
|
||||
{{-- <div class="mb-3">--}}
|
||||
{{-- <label class="form-label">تعداد نفرات</label>--}}
|
||||
{{-- <input type="number" name="seats" min="1" max="{{ $tour->capacity }}" value="1"--}}
|
||||
{{-- class="form-control @error('seats') is-invalid @enderror" required>--}}
|
||||
{{-- @error('seats')--}}
|
||||
{{-- <span class="invalid-feedback">{{ $message }}</span>--}}
|
||||
{{-- @enderror--}}
|
||||
{{-- </div>--}}
|
||||
{{-- <button type="submit" class="btn btn-success w-100">رزرو تور</button>--}}
|
||||
{{-- </form>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </section>--}}
|
||||
{{-- @else--}}
|
||||
{{-- --}}{{----}}{{-- کاربر لاگین نیست => دکمه ورود به روت login --}}
|
||||
{{-- <div class="alert alert-warning text-center">--}}
|
||||
{{-- برای رزرو تور ابتدا <a href="{{ route('login') }}">وارد شوید</a>.--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endauth--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
|
||||
{{--@extends('layouts.app')--}}
|
||||
|
||||
{{--@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">--}}
|
||||
{{-- <img src="{{ $image->path }}" class="d-block w-100" alt="">--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endforeach--}}
|
||||
{{-- </div>--}}
|
||||
|
||||
{{-- <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"/>--}}
|
||||
{{-- @endforeach--}}
|
||||
|
||||
{{-- @auth--}}
|
||||
{{-- <form method="POST" action="{{ route('comments.store', $tour) }}">--}}
|
||||
{{-- @csrf--}}
|
||||
{{-- <textarea name="body" required></textarea>--}}
|
||||
{{-- <button type="submit">ثبت نظر</button>--}}
|
||||
{{-- </form>--}}
|
||||
{{-- @endauth--}}
|
||||
{{--@endsection--}}
|
||||
|
||||
|
||||
+193
-99
@@ -4,13 +4,13 @@
|
||||
use App\Http\Controllers\Admin\AdminController;
|
||||
use App\Http\Controllers\Admin\AirportController;
|
||||
use App\Http\Controllers\Admin\AuthController;
|
||||
use App\Http\Controllers\Admin\CityController;
|
||||
use App\Http\Controllers\Admin\CommentController;
|
||||
use App\Http\Controllers\Admin\DashboardController;
|
||||
use App\Http\Controllers\Admin\FavoriteController;
|
||||
use App\Http\Controllers\Admin\FlightController;
|
||||
use App\Http\Controllers\Admin\PaymentController;
|
||||
use App\Http\Controllers\Admin\ProvinceController;
|
||||
use App\Http\Controllers\Admin\SettingController;
|
||||
use App\Http\Controllers\Admin\SliderController;
|
||||
use App\Http\Controllers\Admin\TourController;
|
||||
use App\Http\Controllers\Admin\TravelTypeController;
|
||||
use App\Http\Controllers\Admin\UserController;
|
||||
@@ -18,11 +18,13 @@ use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::prefix('admin')->name('admin.')->group(function () {
|
||||
|
||||
// صفحه اصلی پنل ادمین
|
||||
Route::get('/', function () {
|
||||
return redirect()->route('admin.dashboard.index');
|
||||
})->name('index');
|
||||
|
||||
// ------------------------------ احراز هویت ادمین ------------------------------
|
||||
|
||||
Route::prefix('auth')->name('auth.')->controller(AuthController::class)->group(function () {
|
||||
|
||||
Route::prefix('login')->name('login.')->middleware('guest:admin')->group(function () {
|
||||
@@ -30,137 +32,229 @@ Route::prefix('admin')->name('admin.')->group(function () {
|
||||
Route::post('/', 'loginPost')->name('post');
|
||||
});
|
||||
|
||||
Route::get('logout', 'logout')->middleware('auth:admin')->name('logout');
|
||||
Route::get('logout', 'logout')
|
||||
->middleware('auth:admin')
|
||||
->name('logout');
|
||||
});
|
||||
|
||||
// ------------------------------ بخشهای محافظتشده ------------------------------
|
||||
|
||||
Route::middleware('auth:admin')->group(function () {
|
||||
|
||||
Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard.index');
|
||||
// ---------- dashboard ----------
|
||||
|
||||
Route::get('dashboard', [DashboardController::class, 'index'])
|
||||
->name('dashboard.index');
|
||||
|
||||
Route::get('dashboard/export', [DashboardController::class, 'exportExcel'])
|
||||
->name('dashboard.export');
|
||||
|
||||
// گزارش خروجی اکسل
|
||||
Route::get('dashboard/export', [DashboardController::class, 'exportExcel'])->name('dashboard.export');
|
||||
|
||||
// ---------- users ----------
|
||||
Route::prefix('users')->name('users.')->group(function () {
|
||||
Route::get('/', [UserController::class, 'index'])->name('index');
|
||||
Route::get('{user}/edit', [UserController::class, 'edit'])->name('edit');
|
||||
Route::put('{user}', [UserController::class, 'update'])->name('update');
|
||||
Route::delete('{user}', [UserController::class, 'destroy'])->name('destroy');
|
||||
|
||||
// تغییر رمز (دو روت مجزا برای فرم و ذخیره)
|
||||
Route::get('{user}/change-password', [UserController::class, 'changePassword'])->name('change-password');
|
||||
Route::put('{user}/change-password', [UserController::class, 'updatePassword'])->name('update-password');
|
||||
Route::prefix('users')->name('users.')->group(function () {
|
||||
Route::get('/', [UserController::class, 'index'])
|
||||
->name('index');
|
||||
|
||||
Route::get('{user}/edit', [UserController::class, 'edit'])
|
||||
->name('edit');
|
||||
|
||||
Route::put('{user}', [UserController::class, 'update'])
|
||||
->name('update');
|
||||
|
||||
Route::delete('{user}', [UserController::class, 'destroy'])
|
||||
->name('destroy');
|
||||
|
||||
Route::get('{user}/change-password', [UserController::class, 'changePassword'])
|
||||
->name('change-password');
|
||||
|
||||
Route::put('{user}/change-password', [UserController::class, 'updatePassword'])
|
||||
->name('update-password');
|
||||
});
|
||||
|
||||
|
||||
// ---------- admins ----------
|
||||
Route::prefix('admins')->name('admins.')->controller(AdminController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
Route::prefix('{admin}')->group(function () {
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
|
||||
Route::prefix('admins')
|
||||
->name('admins.')
|
||||
->controller(AdminController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{admin}')->group(function () {
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- tours ----------
|
||||
Route::prefix('tours')->name('tours.')->controller(TourController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
Route::prefix('{tour}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
// حذف تصویر تور
|
||||
Route::delete('images/{image}', 'removeImage')->name('removeImage');
|
||||
});
|
||||
});
|
||||
|
||||
// ---------- travel types (نوع سفر) ----------
|
||||
Route::prefix('travel-types')->name('travelTypes.')->controller(TravelTypeController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
Route::prefix('{travelType}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
Route::prefix('tours')
|
||||
->name('tours.')
|
||||
->controller(TourController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{tour}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
|
||||
Route::delete('images/{image}', 'removeImage')
|
||||
->name('removeImage');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- travel types ----------
|
||||
|
||||
Route::prefix('travel-types')
|
||||
->name('travelTypes.')
|
||||
->controller(TravelTypeController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{travelType}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- flights ----------
|
||||
Route::prefix('flights')->name('flights.')->controller(FlightController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
Route::prefix('{flight}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
|
||||
Route::prefix('flights')
|
||||
->name('flights.')
|
||||
->controller(FlightController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{flight}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- airports ----------
|
||||
Route::prefix('airports')->name('airports.')->controller(AirportController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
Route::prefix('{airport}')->group(function () {
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
|
||||
Route::prefix('airports')
|
||||
->name('airports.')
|
||||
->controller(AirportController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{airport}')->group(function () {
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- provinces and cities ----------
|
||||
|
||||
Route::prefix('locations')->name('locations.')->group(function () {
|
||||
|
||||
// مدیریت استانها
|
||||
Route::prefix('provinces')
|
||||
->name('provinces.')
|
||||
->controller(ProvinceController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{province}')->group(function () {
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// مدیریت شهرها
|
||||
Route::prefix('cities')
|
||||
->name('cities.')
|
||||
->controller(CityController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('create', 'create')->name('create');
|
||||
Route::post('store', 'store')->name('store');
|
||||
|
||||
Route::prefix('{city}')->group(function () {
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::put('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- comments ----------
|
||||
Route::prefix('comments')->name('comments.')->controller(CommentController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::prefix('{comment}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::patch('update', 'update')->name('update'); // تأیید/رد نظر
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
|
||||
Route::prefix('comments')
|
||||
->name('comments.')
|
||||
->controller(CommentController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
|
||||
Route::prefix('{comment}')->group(function () {
|
||||
Route::get('show', 'show')->name('show');
|
||||
Route::get('edit', 'edit')->name('edit');
|
||||
Route::patch('update', 'update')->name('update');
|
||||
Route::delete('destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// ---------- favorites ----------
|
||||
Route::prefix('favorites')->name('favorites.')->controller(FavoriteController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('{favorite}', 'show')->name('show');
|
||||
Route::delete('{favorite}/destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
|
||||
// ---------- payments ----------
|
||||
Route::prefix('payments')->name('payments.')->controller(PaymentController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('{payment}', 'show')->name('show');
|
||||
});
|
||||
Route::prefix('favorites')
|
||||
->name('favorites.')
|
||||
->controller(FavoriteController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('{favorite}', 'show')->name('show');
|
||||
Route::delete('{favorite}/destroy', 'destroy')->name('destroy');
|
||||
});
|
||||
|
||||
// ---------- sliders ----------
|
||||
// Route::prefix('sliders')->name('sliders.')->controller(SliderController::class)->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('create', 'create')->name('create');
|
||||
// Route::post('store', 'store')->name('store');
|
||||
// Route::prefix('{slider}')->group(function () {
|
||||
// Route::get('show', 'show')->name('show');
|
||||
// Route::get('edit', 'edit')->name('edit');
|
||||
// Route::put('update', 'update')->name('update');
|
||||
// Route::delete('destroy', 'destroy')->name('destroy');
|
||||
// });
|
||||
// });
|
||||
|
||||
// ---------- settings ----------
|
||||
Route::prefix('settings')->name('settings.')->controller(SettingController::class)->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::put('update', 'update')->name('update');
|
||||
});
|
||||
|
||||
Route::prefix('settings')
|
||||
->name('settings.')
|
||||
->controller(SettingController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::put('update', 'update')->name('update');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
+2
-73
@@ -8,12 +8,7 @@ use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::prefix('auth')->name('auth.')->group(function () {
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Guest
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
//Guest
|
||||
Route::middleware('guest:web')->group(function () {
|
||||
|
||||
// Register
|
||||
@@ -45,75 +40,9 @@ Route::prefix('auth')->name('auth.')->group(function () {
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Logout
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
// Logout
|
||||
|
||||
Route::get('logout', [LogoutController::class, 'index'])
|
||||
->middleware('auth:web')
|
||||
->name('logout');
|
||||
});
|
||||
//
|
||||
//
|
||||
//use App\Http\Controllers\Auth\LoginController;
|
||||
//use App\Http\Controllers\Auth\LogoutController;
|
||||
//use App\Http\Controllers\Auth\RegisterController;
|
||||
//use Illuminate\Support\Facades\Route;
|
||||
//
|
||||
//Route::prefix('auth')->name('auth.')->group(function () {
|
||||
//
|
||||
// Route::middleware('guest:web')->group(function () {
|
||||
//
|
||||
// Route::controller(RegisterController::class)
|
||||
// ->prefix('register')
|
||||
// ->name('register.')
|
||||
// ->group(function () {
|
||||
//
|
||||
// Route::get('/', 'index')->name('index');
|
||||
//
|
||||
// Route::post('/', 'post')->name('post');
|
||||
//
|
||||
// Route::get('cities/{province}', 'cities')
|
||||
// ->name('cities');
|
||||
// });
|
||||
//
|
||||
//
|
||||
// Route::controller(LoginController::class)
|
||||
// ->prefix('login')
|
||||
// ->name('login.')
|
||||
// ->group(function () {
|
||||
//
|
||||
// Route::get('/', 'index')->name('index');
|
||||
//
|
||||
// Route::post('/', 'post')->name('post');
|
||||
// });
|
||||
// });
|
||||
//
|
||||
//
|
||||
// Route::get('logout', [LogoutController::class, 'index'])
|
||||
// ->middleware('auth:web')
|
||||
// ->name('logout');
|
||||
//});
|
||||
//
|
||||
////Route::prefix('auth')->name('auth.')->group(function () {
|
||||
////
|
||||
//// Route::middleware('guest:web')->group(function () {
|
||||
////
|
||||
//// Route::controller(RegisterController::class)
|
||||
//// ->prefix('register')->name('register.')->group(function () {
|
||||
//// Route::get('/', 'index')->name('index');
|
||||
//// Route::post('/', 'post')->name('post');
|
||||
//// });
|
||||
////
|
||||
//// Route::controller(LoginController::class)
|
||||
//// ->prefix('login')->name('login.')->group(function () {
|
||||
//// Route::get('/', 'index')->name('index');
|
||||
//// Route::post('/', 'post')->name('post');
|
||||
//// });
|
||||
//// });
|
||||
////
|
||||
//// Route::get('logout', [LogoutController::class, 'index'])
|
||||
//// ->middleware('auth:web')->name('logout');
|
||||
////});
|
||||
|
||||
+45
-333
@@ -1,377 +1,89 @@
|
||||
<?php
|
||||
|
||||
|
||||
use App\Http\Controllers\Account\BookingController;
|
||||
use App\Http\Controllers\Account\CommentController as AccountCommentController;
|
||||
use App\Http\Controllers\Account\EditProfileController;
|
||||
use App\Http\Controllers\Account\FavoriteController;
|
||||
use App\Http\Controllers\Account\FavoriteController as AccountFavoriteController;
|
||||
use App\Http\Controllers\BookingController as SiteBookingController;
|
||||
use App\Http\Controllers\CommentController;
|
||||
use App\Http\Controllers\FavoriteController;
|
||||
use App\Http\Controllers\FlightController;
|
||||
use App\Http\Controllers\IndexController;
|
||||
use App\Http\Controllers\PageController;
|
||||
|
||||
use App\Http\Controllers\TourController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// ------------------------------ index ------------------------------
|
||||
// ------------------------------ صفحه اصلی ------------------------------
|
||||
Route::get('/', [IndexController::class, 'index'])->name('index');
|
||||
|
||||
// ------------------------------ tours (مثل products) ------------------------------
|
||||
Route::prefix('tours')->name('tours.')->controller(TourController::class)
|
||||
// ------------------------------ تورها ------------------------------
|
||||
Route::prefix('tours')
|
||||
->name('tours.')
|
||||
->controller(TourController::class)
|
||||
->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('remove-filters', 'removeFilters')->name('remove-filters');
|
||||
Route::get('search/suggestion', 'searchSuggestion')->name('searchSuggestion'); // قبل از {tour}
|
||||
Route::get('search/suggestion', 'searchSuggestion')->name('searchSuggestion');
|
||||
Route::get('{tour}', 'show')->name('show');
|
||||
});
|
||||
|
||||
// ------------------------------ flights ------------------------------
|
||||
Route::prefix('flights')->name('flights.')->controller(FlightController::class)
|
||||
// ------------------------------ پروازها ------------------------------
|
||||
Route::prefix('flights')
|
||||
->name('flights.')
|
||||
->controller(FlightController::class)
|
||||
->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('search', 'search')->name('search');
|
||||
Route::get('{flight}', 'show')->name('show');
|
||||
});
|
||||
|
||||
// ------------------------------ علاقهمندیها ------------------------------
|
||||
Route::prefix('favorites')->name('favorites.')
|
||||
->middleware('auth')->controller(FavoriteController::class)
|
||||
// ------------------------------ نظرات (پلیمورفیک) ------------------------------
|
||||
Route::prefix('comments')
|
||||
->name('comments.')
|
||||
->middleware('auth')
|
||||
->controller(AccountCommentController::class) // اصلاح شد: استفاده از کنترلر صحیح
|
||||
->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::post('toggle', 'toggle')->name('toggle'); // افزودن/حذف با ajax
|
||||
Route::get('clear', 'clear')->name('clear');
|
||||
Route::post('tour/{tour}', 'storeTour')->name('tour.store');
|
||||
Route::post('flight/{flight}', 'storeFlight')->name('flight.store');
|
||||
});
|
||||
|
||||
// ------------------------------ رزرو (مرحله اول: بدون پرداخت) ------------------------------
|
||||
// ------------------------------ علاقهمندیها (عمومی) ------------------------------
|
||||
Route::prefix('favorites')->name('favorites.')->middleware('auth')->controller(FavoriteController::class)->group(function () {
|
||||
Route::post('toggle', 'toggle')->name('toggle');
|
||||
});
|
||||
|
||||
// ------------------------------ رزرو ------------------------------
|
||||
Route::prefix('booking')
|
||||
->name('booking.')
|
||||
->middleware('auth')
|
||||
->controller(SiteBookingController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')->name('index'); // صفحه رزرو
|
||||
|
||||
Route::post('tours/{tour}', 'store')->name('store'); // رزرو تور
|
||||
|
||||
Route::get('flights/{flight}', 'flight')->name('flight'); // فرم رزرو پرواز
|
||||
|
||||
Route::post('flights/{flight}', 'storeFlight')->name('flight.store'); // ثبت نهایی پرواز
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::post('tours/{tour}', 'store')->name('store');
|
||||
Route::get('flights/{flight}', 'flight')->name('flight');
|
||||
Route::post('flights/{flight}', 'storeFlight')->name('flight.store');
|
||||
});
|
||||
|
||||
// ------------------------------ پنل شخصی کاربر ------------------------------
|
||||
Route::prefix('account')->name('account.')
|
||||
// ------------------------------ پنل کاربری ------------------------------
|
||||
Route::prefix('account')
|
||||
->name('account.')
|
||||
->middleware('auth')
|
||||
->group(function () {
|
||||
|
||||
// 🔥 تغییر اینجا: بهجای HomeController از IndexController
|
||||
Route::get('/', [IndexController::class, 'index'])->name('index'); // داشبورد
|
||||
Route::get('/', [IndexController::class, 'index'])->name('index');
|
||||
|
||||
Route::controller(BookingController::class)->group(function () {
|
||||
Route::get('bookings', 'index')->name('bookings'); // رزروها
|
||||
});
|
||||
// علاقهمندیها
|
||||
Route::get('favorites', [AccountFavoriteController::class, 'index'])->name('favorites');
|
||||
|
||||
Route::controller(FavoriteController::class)->group(function () {
|
||||
Route::get('favorites', 'index')->name('favorites');
|
||||
});
|
||||
// نظرات
|
||||
Route::get('comments', [AccountCommentController::class, 'myComments'])->name('comments');
|
||||
|
||||
Route::prefix('edit-profile')->name('edit-profile.')
|
||||
->controller(EditProfileController::class)->group(function () {
|
||||
// پروفایل
|
||||
Route::prefix('edit-profile')
|
||||
->name('edit-profile.')
|
||||
->controller(EditProfileController::class)
|
||||
->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::post('/', 'post')->name('post');
|
||||
});
|
||||
});
|
||||
|
||||
// ------------------------------ صفحات ثابت ------------------------------
|
||||
Route::get('/about', [PageController::class, 'about'])->name('about');
|
||||
Route::get('/contact', [PageController::class, 'contact'])->name('contact');
|
||||
Route::get('/faq', [PageController::class, 'faq'])->name('faq');
|
||||
|
||||
//
|
||||
//use App\Http\Controllers\Account\BookingController;
|
||||
//use App\Http\Controllers\Account\EditProfileController;
|
||||
//use App\Http\Controllers\Account\FavoriteController;
|
||||
//use App\Http\Controllers\Account\HomeController;
|
||||
//use App\Http\Controllers\BookingController as SiteBookingController;
|
||||
////use App\Http\Controllers\CommentController;
|
||||
//use App\Http\Controllers\FlightController;
|
||||
//use App\Http\Controllers\IndexController;
|
||||
//use App\Http\Controllers\PageController;
|
||||
//use App\Http\Controllers\TourController;
|
||||
//
|
||||
//use Illuminate\Support\Facades\Route;
|
||||
////use App\Http\Controllers\BookingController;
|
||||
////use App\Http\Controllers\CommentController;
|
||||
////use App\Http\Controllers\EditProfileController;
|
||||
////use App\Http\Controllers\FavoriteController;
|
||||
////use App\Http\Controllers\HomeController;
|
||||
////use App\Http\Controllers\BookingController as SiteBookingController;
|
||||
////use App\Http\Controllers\FlightController;
|
||||
////use App\Http\Controllers\IndexController;
|
||||
////use App\Http\Controllers\PageController;
|
||||
////use App\Http\Controllers\TourController;
|
||||
////use Illuminate\Support\Facades\Route;
|
||||
//
|
||||
//// ------------------------------ index ------------------------------
|
||||
//Route::get('/', [IndexController::class, 'index'])->name('index');
|
||||
//
|
||||
//// ------------------------------ tours (مثل products) ------------------------------
|
||||
//Route::prefix('tours')->name('tours.')->controller(TourController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('remove-filters', 'removeFilters')->name('remove-filters');
|
||||
// Route::get('search/suggestion', 'searchSuggestion')->name('searchSuggestion'); // قبل از {tour}
|
||||
// Route::get('{tour}', 'show')->name('show');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ flights ------------------------------
|
||||
//Route::prefix('flights')->name('flights.')->controller(FlightController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('search', 'search')->name('search');
|
||||
// Route::get('{flight}', 'show')->name('show');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ نظرات (مهمان یا عضو) ------------------------------
|
||||
////Route::post('tours/{tour}/comments', [CommentController::class, 'store'])
|
||||
//// ->middleware('auth')->name('comments.store');
|
||||
//
|
||||
//// ------------------------------ علاقهمندیها ------------------------------
|
||||
//Route::prefix('favorites')->name('favorites.')
|
||||
// ->middleware('auth')->controller(FavoriteController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::post('toggle', 'toggle')->name('toggle'); // افزودن/حذف با ajax
|
||||
// Route::get('clear', 'clear')->name('clear');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ رزرو (مرحله اول: بدون پرداخت) ------------------------------
|
||||
//
|
||||
//Route::prefix('booking')
|
||||
// ->name('booking.')
|
||||
// ->middleware('auth')
|
||||
// ->controller(SiteBookingController::class)
|
||||
// ->group(function () {
|
||||
//
|
||||
// // صفحه رزرو
|
||||
// Route::get('/', 'index')->name('index');
|
||||
//
|
||||
// // رزرو تور
|
||||
// Route::post('tours/{tour}', 'store')
|
||||
// ->name('store');
|
||||
//
|
||||
// // صفحه فرم رزرو پرواز
|
||||
// Route::get('flights/{flight}', 'flight')
|
||||
// ->name('flight');
|
||||
//
|
||||
// // ثبت نهایی رزرو پرواز
|
||||
// Route::post('flights/{flight}', 'storeFlight')
|
||||
// ->name('flight.store');
|
||||
//
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ پنل شخصی کاربر ------------------------------
|
||||
//Route::prefix('account')->name('account.')
|
||||
// ->middleware('auth')
|
||||
// ->group(function () {
|
||||
//
|
||||
// Route::get('/', [HomeController::class, 'index'])->name('index'); // داشبورد
|
||||
//
|
||||
// Route::controller(BookingController::class)->group(function () {
|
||||
// Route::get('bookings', 'index')->name('bookings'); // رزروها
|
||||
// });
|
||||
//
|
||||
// Route::controller(FavoriteController::class)->group(function () {
|
||||
// Route::get('favorites', 'index')->name('favorites');
|
||||
// });
|
||||
//
|
||||
//// Route::controller(CommentController::class)->group(function () {
|
||||
//// Route::get('comments', 'index')->name('comments');
|
||||
//// });
|
||||
//
|
||||
// Route::prefix('edit-profile')->name('edit-profile.')
|
||||
// ->controller(EditProfileController::class)->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::post('/', 'post')->name('post');
|
||||
// });
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ صفحات ثابت ------------------------------
|
||||
//Route::get('/about', [PageController::class, 'about'])->name('about');
|
||||
//Route::get('/contact', [PageController::class, 'contact'])->name('contact');
|
||||
//Route::get('/faq', [PageController::class, 'faq'])->name('faq');
|
||||
|
||||
//
|
||||
//
|
||||
//use App\Http\Controllers\Account\BookingController as AccountBookingController;
|
||||
//use App\Http\Controllers\Account\EditProfileController;
|
||||
//use App\Http\Controllers\Account\FavoriteController as AccountFavoriteController;
|
||||
//use App\Http\Controllers\Account\HomeController;
|
||||
//use App\Http\Controllers\Account\CommentController as AccountCommentController;
|
||||
//use App\Http\Controllers\BookingController as SiteBookingController;
|
||||
//use App\Http\Controllers\CommentController;
|
||||
//use App\Http\Controllers\FavoriteController as SiteFavoriteController;
|
||||
//use App\Http\Controllers\FlightController;
|
||||
//use App\Http\Controllers\IndexController;
|
||||
//use App\Http\Controllers\PageController;
|
||||
//use App\Http\Controllers\TourController;
|
||||
//use Illuminate\Support\Facades\Route;
|
||||
//
|
||||
//// ------------------------------ index ------------------------------
|
||||
//Route::get('/', [IndexController::class, 'index'])->name('index');
|
||||
//
|
||||
//// ------------------------------ json-suggestion-search (جستجوی پیشنهادی تورها) ------------------------------
|
||||
//// قبل از گروه tours تعریف شد تا با روت {tour} تداخل پیدا نکند
|
||||
//Route::get('tours/search/suggestion', [TourController::class, 'searchSuggestion'])
|
||||
// ->name('tours.searchSuggestion');
|
||||
//
|
||||
//// ------------------------------ tours ------------------------------
|
||||
//Route::prefix('tours')
|
||||
// ->name('tours.')
|
||||
// ->controller(TourController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('remove-filters', 'removeFilters')->name('remove-filters');
|
||||
// Route::get('{tour}', 'show')->name('show');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ flights ------------------------------
|
||||
//Route::prefix('flights')
|
||||
// ->name('flights.')
|
||||
// ->controller(FlightController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('search', 'search')->name('search');
|
||||
// Route::get('{flight}', 'show')->name('show');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ نظرات (فقط کاربر واردشده) ------------------------------
|
||||
//Route::post('tours/{tour}/comments', [CommentController::class, 'store'])
|
||||
// ->middleware('auth')
|
||||
// ->name('comments.store');
|
||||
//
|
||||
//// ------------------------------ علاقهمندیها ------------------------------
|
||||
//Route::prefix('favorites')
|
||||
// ->name('favorites.')
|
||||
// ->middleware('auth')
|
||||
// ->controller(SiteFavoriteController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::post('toggle', 'toggle')->name('toggle'); // افزودن/حذف با ajax
|
||||
// Route::get('clear', 'clear')->name('clear');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ رزرو (بدون پرداخت) ------------------------------
|
||||
//Route::prefix('booking')
|
||||
// ->name('booking.')
|
||||
// ->middleware('auth')
|
||||
// ->controller(SiteBookingController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index'); // فرم رزرو تور
|
||||
// Route::post('tours/{tour}', 'store')->name('store'); // ثبت رزرو
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ پنل شخصی کاربر ------------------------------
|
||||
//Route::prefix('account')
|
||||
// ->name('account.')
|
||||
// ->middleware('auth')
|
||||
// ->group(function () {
|
||||
//
|
||||
// Route::get('/', [HomeController::class, 'index'])->name('index'); // داشبورد
|
||||
//
|
||||
// Route::get('bookings', [AccountBookingController::class, 'index'])->name('bookings');
|
||||
// Route::get('favorites', [AccountFavoriteController::class, 'index'])->name('favorites');
|
||||
// Route::get('comments', [AccountCommentController::class, 'index'])->name('comments');
|
||||
//
|
||||
// Route::prefix('edit-profile')
|
||||
// ->name('edit-profile.')
|
||||
// ->controller(EditProfileController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::post('/', 'post')->name('post');
|
||||
// });
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ صفحات ثابت ------------------------------
|
||||
//Route::get('/about', [PageController::class, 'about'])->name('about');
|
||||
//Route::get('/contact', [PageController::class, 'contact'])->name('contact');
|
||||
//Route::get('/faq', [PageController::class, 'faq'])->name('faq');
|
||||
|
||||
//
|
||||
//
|
||||
////use App\Http\Controllers\Account\EditProfileController;
|
||||
////use App\Http\Controllers\Account\BookingController;
|
||||
////use App\Http\Controllers\Account\FavoriteController;
|
||||
////use App\Http\Controllers\BookingController as SiteBookingController;
|
||||
////use App\Http\Controllers\CommentController;
|
||||
////use App\Http\Controllers\FavoriteController as SiteFavoriteController;
|
||||
////use App\Http\Controllers\FlightController;
|
||||
//use App\Http\Controllers\IndexController;
|
||||
////use App\Http\Controllers\PageController;
|
||||
////use App\Http\Controllers\PaymentController;
|
||||
//use App\Http\Controllers\TourController;
|
||||
//use Illuminate\Support\Facades\Route;
|
||||
//
|
||||
//// ------------------------------ index ------------------------------
|
||||
//Route::get('/', [IndexController::class, 'index'])->name('index');
|
||||
//
|
||||
//// ------------------------------ tours (مثل products) ------------------------------
|
||||
//Route::prefix('tours')->name('tours.')->controller(TourController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('remove-filters', 'removeFilters')->name('remove-filters');
|
||||
// Route::get('{tour}', 'show')->name('show');
|
||||
// });
|
||||
//
|
||||
//// json-suggestion-search (جستجوی پیشنهادی تورها)
|
||||
//Route::get('tours/search/suggestion', [TourController::class, 'searchSuggestion'])
|
||||
// ->name('tours.searchSuggestion');
|
||||
//
|
||||
//// ------------------------------ flights ------------------------------
|
||||
//Route::prefix('flights')->name('flights.')->controller(FlightController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::get('search', 'search')->name('search');
|
||||
// Route::get('{flight}', 'show')->name('show');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ نظرات (مهمان یا عضو) ------------------------------
|
||||
//Route::post('tours/{tour}/comments', [CommentController::class, 'store'])
|
||||
// ->middleware('auth')->name('comments.store');
|
||||
//
|
||||
//// ------------------------------ علاقهمندیها ------------------------------
|
||||
//Route::prefix('favorites')->name('favorites.')
|
||||
// ->middleware('auth')->controller(SiteFavoriteController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::post('toggle', 'toggle')->name('toggle'); // افزودن/حذف با ajax
|
||||
// Route::get('clear', 'clear')->name('clear');
|
||||
// });
|
||||
//
|
||||
//// ------------------------------ رزرو و پرداخت ------------------------------
|
||||
//Route::prefix('booking')->name('booking.')
|
||||
// ->middleware('auth')->controller(SiteBookingController::class)
|
||||
// ->group(function () {
|
||||
// Route::get('/', 'index')->name('index'); // فرم رزرو تور
|
||||
// Route::post('tours/{tour}', 'store')->name('store'); // ثبت رزرو
|
||||
// });
|
||||
//
|
||||
//Route::get('payment/{booking}/pay', [PaymentController::class, 'pay'])
|
||||
// ->middleware('auth')->name('payment.pay');
|
||||
//
|
||||
//// ------------------------------ پنل شخصی کاربر ------------------------------
|
||||
//Route::prefix('account')->name('account.')->middleware('auth')->group(function () {
|
||||
//
|
||||
// Route::get('/', [HomeController::class, 'index'])->name('index'); // داشبورد
|
||||
// Route::get('bookings', [BookingController::class, 'index'])->name('bookings'); // رزروها
|
||||
// Route::get('favorites', [FavoriteController::class, 'index'])->name('favorites');
|
||||
// Route::get('comments', [CommentController::class, 'index'])->name('comments');
|
||||
//
|
||||
// Route::prefix('edit-profile')->name('edit-profile.')
|
||||
// ->controller(EditProfileController::class)->group(function () {
|
||||
// Route::get('/', 'index')->name('index');
|
||||
// Route::post('/', 'post')->name('post');
|
||||
// });
|
||||
//});
|
||||
//
|
||||
//// ------------------------------ صفحات ثابت ------------------------------
|
||||
//Route::get('/about', [PageController::class, 'about'])->name('about');
|
||||
//Route::get('/contact', [PageController::class, 'contact'])->name('contact');
|
||||
//Route::get('/faq', [PageController::class, 'faq'])->name('faq');
|
||||
|
||||
Reference in New Issue
Block a user