git add .

git commit "Complete project development and finalize features"
This commit is contained in:
2026-08-22 11:14:07 +03:30
parent e72f68cd86
commit 2f431971c0
40 changed files with 126 additions and 637 deletions
@@ -8,7 +8,6 @@ use Illuminate\Http\Request;
class ActivityLogController extends Controller
{
//
public function index()
{
$logs=ActivityLog::with('admin')
@@ -18,20 +18,21 @@ class AuthController extends Controller
}
public function loginPost(LoginPostRequest $request)
{
$loginData=$request->validated();
$login=$request->validated();
$admins=Admin::query()
->where('username',$request->input('username'))
->where('status',AdminStatus::Active)
->first();
if (!$admins){
if (!$admins || !\Hash::check($login['password'],$admins->password)){
return back()->withErrors([
'general' => 'اطلاعات وارد شده نامعتبر است'
]);
}
Auth::guard('admin')->login($admins);
$request->session()->regenerate();
return redirect()->route('admin.dashboard.index');
}
@@ -24,14 +24,10 @@ class FlightController extends Controller
return view('admin.flights.index', compact('flights'));
}
public function create()
{
return view('admin.flights.create');
}
public function store(FlightStoreRequest $request)
{
DB::beginTransaction();
@@ -46,8 +42,6 @@ class FlightController extends Controller
)->formatGregorian('Y-m-d');
}
if ($request->hasFile('image')) {
$data['image'] = $request
@@ -70,7 +64,6 @@ class FlightController extends Controller
DB::commit();
return redirect()
->route('admin.flights.index')
->with('success','پرواز ثبت شد');
@@ -84,14 +77,10 @@ class FlightController extends Controller
}
}
public function edit(Flight $flight)
{
return view('admin.flights.edit',compact('flight'));
}
public function update(FlightStoreRequest $request, Flight $flight)
{
@@ -118,12 +107,9 @@ class FlightController extends Controller
->delete($flight->image);
}
$data['image'] = $request
->file('image')
->store('flights','public');
}
$data['updated_by'] = auth('admin')->id();
@@ -140,12 +126,10 @@ class FlightController extends Controller
DB::commit();
return redirect()
->route('admin.flights.index')
->with('success','پرواز ویرایش شد');
}catch(\Exception $e){
DB::rollBack();
@@ -155,7 +139,6 @@ class FlightController extends Controller
}
}
public function destroy(Flight $flight)
{
@@ -179,6 +162,5 @@ class FlightController extends Controller
return back()
->with('success','پرواز حذف شد');
}
}
@@ -8,7 +8,6 @@ use Illuminate\Http\Request;
class ProvinceController extends Controller
{
public function index()
{
$provinces = Province::latest()->paginate(5);
@@ -16,15 +15,11 @@ class ProvinceController extends Controller
return view('admin.provinces.index', compact('provinces'));
}
public function create()
{
return view('admin.provinces.create');
}
public function store(Request $request)
{
@@ -42,41 +37,27 @@ class ProvinceController extends Controller
->route('admin.provinces.index');
}
public function edit(Province $province)
{
return view('admin.provinces.edit',compact('province'));
}
public function update(Request $request, Province $province)
{
$request->validate([
'name'=>'required'
]);
$province->update([
'name'=>$request->name
]);
return redirect()
->route('admin.provinces.index');
}
public function destroy(Province $province)
{
$province->delete();
return back();
}
}
@@ -26,7 +26,5 @@ class RoleController extends Controller
return redirect()->back()->with('success','دسترسی‌ها با موفقیت ذخیره شد');
}
}
@@ -18,14 +18,12 @@ class SettingController extends Controller
return view('admin.settings.index', compact('settings'));
}
public function create()
{
$settings = Setting::all();
return view('admin.settings.create',compact('settings'));
}
public function store(SettingStoreRequest $request)
{
Setting::create($request->validated());
@@ -36,18 +34,14 @@ class SettingController extends Controller
public function edit(Setting $setting)
{
return view('admin.settings.edit', compact('setting'));
}
public function update(SettingUpdateRequest $request,Setting $setting)
{
$setting->update($request->validated());
return redirect()
->route('admin.settings.index')
->with('success', 'تنظیمات با موفقیت ویرایش شد.');
}
public function destroy(Setting $setting)
@@ -25,15 +25,10 @@ class TourController extends Controller
return view('admin.tours.index', compact('tours'));
}
public function create()
{
return view('admin.tours.create' );
}
public function store(TourStoreRequest $request)
{
DB::beginTransaction();
@@ -49,7 +44,6 @@ class TourController extends Controller
)->formatGregorian('Y-m-d');
}
if ($request->hasFile('image')) {
$data['image'] = $request
@@ -69,8 +63,6 @@ class TourController extends Controller
'model_id' => $tour->id,
'description' => 'ثبت تور جدید',
]);
DB::commit();
@@ -78,7 +70,6 @@ class TourController extends Controller
->route('admin.tours.index')
->with('success','تور ثبت شد');
} catch(\Exception $e) {
DB::rollBack();
@@ -92,8 +83,6 @@ class TourController extends Controller
return view('admin.tours.edit',compact('tour'));
}
public function update(TourStoreRequest $request, Tour $tour)
{
@@ -121,7 +110,6 @@ class TourController extends Controller
}
$data['image'] = $request
->file('image')
->store('tours','public');
@@ -139,15 +127,12 @@ class TourController extends Controller
'description' => 'ویرایش تور',
]);
DB::commit();
return redirect()
->route('admin.tours.index')
->with('success','تور ویرایش شد');
}catch(\Exception $e){
DB::rollBack();
@@ -155,12 +140,10 @@ class TourController extends Controller
dd($e->getMessage());
}
}
public function destroy(Tour $tour)
{
if($tour->image){
Storage::disk('public')
@@ -176,12 +159,9 @@ class TourController extends Controller
'description' => 'حذف تور',
]);
$tour->delete();
return back()
->with('success','تور حذف شد');
}
}
@@ -49,7 +49,5 @@ class UserController extends Controller
$user->update(['password'=>Hash::make($request->password)]);
return back();
}
}
@@ -18,7 +18,6 @@ class LoginController extends Controller
return view('auth.login',compact('withoutHeader','withoutHero','withoutFooter'));
}
public function post(LoginPostRequest $request)
{
$user = $request->validated();
@@ -16,6 +16,5 @@ class LogoutController extends Controller
Request()->session()->regenerateToken();
return redirect()->route('index');
}
}
@@ -40,8 +40,6 @@ class RegisterController extends Controller
$inputs['profile_image'] = $imageName;
}
$inputs['password']=Hash::make($inputs['password']);
$inputs['status']=UserStatus::Draft;
@@ -51,6 +49,5 @@ class RegisterController extends Controller
return redirect()->route('index');
}
}
@@ -25,20 +25,15 @@ class FavoriteController extends Controller
'favoritable_id' => $request->id,
]);
return back();
}
public function destroy(Favorite $favorite)
{
$favorite->delete();
return back()->with(
'success',
'تور از علاقه‌مندی‌ها حذف شد.'
);
}
}
+2 -10
View File
@@ -15,26 +15,19 @@ class FlightController extends Controller
->applySearch($request->all())
->paginate(10);
$newestFlight = Flight::latest()
->take(3)
->get();
$newestTour = Tour::latest()
->take(3)
->get();
$tours = Tour::latest()
->paginate(10);
return view('flights.index', compact(
'flights',
'newestFlight',
'newestTour',
'tours'
return view('flights.index', compact('flights', 'newestFlight',
'newestTour', 'tours'
));
}
public function show(Flight $flight)
@@ -48,7 +41,6 @@ class FlightController extends Controller
->latest()
->get();
return view('flights.show', compact('flight', 'comments'));
}
+2 -5
View File
@@ -24,11 +24,8 @@ class HomeController extends Controller
$tours = Tour::latest()
->paginate(5);
return view('home.index', compact(
'newestFlight',
'newestTour',
'flights',
'tours'
return view('home.index', compact('newestFlight',
'newestTour', 'flights', 'tours'
));
}
}
@@ -16,11 +16,8 @@ class ReservationController extends Controller
->latest()
->get();
return view('account.users.Reservation.index', compact('reservations'));
}
public function store(Request $request)
{
@@ -32,6 +29,7 @@ class ReservationController extends Controller
'status' => 'pending'
]);
return redirect()->route('users.reservations.index')->with('success','رزرو شما ثبت شد.'); }
return redirect()->route('users.reservations.index')
->with('success','رزرو شما ثبت شد.'); }
}
+2 -4
View File
@@ -17,9 +17,8 @@ class TourController extends Controller
->latest()
->paginate(2);
return view('tours.index', compact('tours'))
->with('withoutHero', true); }
return view('tours.index', compact('tours', 'newestTour'));
}
public function show(Tour $tour)
{
@@ -33,7 +32,6 @@ class TourController extends Controller
->latest()
->get();
return view('tours.show', compact('tour','comments'));
}
}
+22 -14
View File
@@ -16,6 +16,27 @@ class FlightStoreRequest extends FormRequest
return true;
}
protected function prepareForValidation()
{
if ($this->departure_date) {
try {
$this->merge([
'departure_date' => verta($this->departure_date)
->formatGregorian('Y-m-d')
]);
} catch (\Exception $e) {
$this->merge([
'departure_date' => null
]);
}
}
}
/**
* Get the validation rules that apply to the request.
*
@@ -46,20 +67,7 @@ class FlightStoreRequest extends FormRequest
],
'departure_date' => [
'required',
function ($attribute, $value, $fail) {
try {
$gregorian = Verta::parse($value)
->formatGregorian('Y-m-d');
} catch (\Exception $e) {
$fail('تاریخ حرکت معتبر نیست.');
return;
}
if ($gregorian < now()->format('Y-m-d')) {
$fail('تاریخ حرکت نمی‌تواند قبل از تاریخ امروز باشد.');
}
},
'date'
],
'departure_time' => [
'required',
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+30 -10
View File
@@ -15,23 +15,38 @@
<div class="account-sidebar">
<div class="account-user">
<div class="avatar">
@if(auth()->user()->profile_image)
<img
src="{{ asset('uploads/users/' . auth()->user()->profile_image) }}"
alt="تصویر پروفایل"
style="width:100px;height:100px;object-fit:cover;border-radius:50%;"
>
@else
<i class="fa fa-user"></i>
@endif
</div>
<h4>
</h4>
<br>
<span>
{{Auth::user()->email}}
{{ auth()->user()->email }}
</span>
</div>
<ul>
<li>
<a href="{{route('users.profile.edit')}}">
<a href="{{ route('users.profile.edit') }}">
<i class="fa fa-user"></i>
پروفایل من
</a>
@@ -39,7 +54,7 @@
<li>
<a href="{{route('users.favorite.index')}}">
<a href="{{ route('users.favorite.index') }}">
<i class="fa fa-heart"></i>
علاقه‌مندی‌ها
</a>
@@ -47,23 +62,28 @@
<li>
<a href="{{route('comments.index')}}">
<a href="{{ route('comments.index') }}">
<i class="fa fa-comments"></i>
نظرات من
</a>
</li>
<li>
<a href="{{route('users.reservations.index')}}">
<i class="fa fa-reservations"></i>
<a href="{{ route('users.reservations.index') }}">
<i class="fa fa-calendar"></i>
رزرو من
</a>
</li>
<form action="{{ route('auth.logout.index') }}" method="POST">
@csrf
<button type="submit">
خروج
</button>
</form>
</ul>
</div>
</body>
</html>
@@ -1,52 +1,29 @@
@extends('layouts.app')
@section('content')
<div class="theme-page-section theme-page-section-lg">
<div class="container">
<div class="row">
<div class="col-md-3">
@include('account.layout.app')
</div>
<div class="col-md-9">
<div class="account-content">
<h2 class="account-title">
رزروهای من ✈️
رزروهای من
</h2>
@if($reservations->count())
<div class="favorite-list">
@foreach($reservations as $reservation)
<div class="favorite-card">
<div class="favorite-info">
@if($reservation->reservable_type == 'App\Models\Tour')
<h3>
{{ $reservation->reservable?->title ?? 'تور حذف شده' }}
</h3>
@@ -55,7 +32,6 @@
تور
</p>
@elseif($reservation->reservable_type == 'App\Models\Flight')
@@ -71,8 +47,6 @@
@endif
<p>
مبلغ:
@@ -82,8 +56,6 @@
</strong>
</p>
<p>
وضعیت:
@@ -110,22 +82,12 @@
</p>
</div>
</div>
@endforeach
</div>
@else
<div class="empty-favorite">
<i class="fa fa-plane"></i>
@@ -135,22 +97,10 @@
</p>
</div>
@endif
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -1,27 +1,17 @@
@extends('account.layout.app')
@section('account-content')
<div class="profile-box">
<h3 class="fw-bold">
سلام {{auth()->user()->name}} 👋
</h3>
<p class="text-muted">
از اینجا می‌توانید تورها، پروازها و نظرات خود را مدیریت کنید.
</p>
<div class="row mt-4">
<div class="col-md-4">
<div class="card border-0 shadow-sm rounded-4 p-3">
<h5>
@@ -31,15 +21,10 @@
<strong>
{{ auth()->user()->favorites()->count() }}
</strong>
</div>
</div>
<div class="col-md-4">
<div class="card border-0 shadow-sm rounded-4 p-3">
<h5>
@@ -51,31 +36,19 @@
</strong>
</div>
</div>
<div class="col-md-4">
<div class="card border-0 shadow-sm rounded-4 p-3">
<h5>
رزرو✈️
</h5>
<strong>
{{ auth()->user()->reservations()->count() }}
</strong>
</div>
</div>
</div>
</div>
@endsection
@@ -80,7 +80,6 @@
@endforeach
</div>
@else
<div class="empty-favorite">
@@ -1,35 +1,25 @@
@extends('layouts.app')
@section('content')
<div class="theme-page-section theme-page-section-lg">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="col-md-3">
@include('account.layout.app')
</div>
</div>
<div class="col-md-9">
<div class="theme-account">
<div class="theme-account-header">
<h1 class="theme-account-title">
ویرایش پروفایل
</h1>
<p class="theme-account-subtitle">
اطلاعات حساب کاربری خود را ویرایش کنید
</p>
</div>
@if(session('success'))
@@ -38,14 +28,12 @@
</div>
@endif
@if($errors->any())
<div class="alert alert-danger">
لطفاً خطاهای فرم را بررسی کنید.
</div>
@endif
<form
action="{{ route('users.profile.update') }}"
method="POST"
@@ -163,7 +151,6 @@
</div>
<div class="col-md-6">
<div class="form-group">
@@ -321,12 +308,9 @@
{{ $message }}
</span>
@enderror
</div>
</div>
<div class="col-md-12">
<div class="form-group">
@@ -350,13 +334,9 @@
@enderror
</div>
</div>
</div>
</div>
</div>
<div class="theme-account-box">
@@ -427,18 +407,12 @@
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
</div>
</div>
<div class="theme-account-box">
<div class="theme-account-box-header">
@@ -458,9 +432,7 @@
alt="تصویر پروفایل"
style="width:100px;height:100px;object-fit:cover;border-radius:50%;"
>
</div>
@endif
<div class="form-group">
@@ -482,15 +454,11 @@
{{ $message }}
</span>
@enderror
</div>
</div>
</div>
<div class="theme-account-box">
<div class="theme-account-box-header">
<h3>
@@ -532,7 +500,6 @@
</div>
<div class="col-md-6">
<div class="form-group">
@@ -555,10 +522,8 @@
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
@@ -575,13 +540,9 @@
>
</div>
</div>
</div>
</div>
</div>
<div class="text-left">
@@ -592,20 +553,13 @@
>
ذخیره تغییرات
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
@@ -5,72 +5,42 @@
گزارش فعالیت‌ها
</span>
@endsection
@section('content')
<div class="container mt-4">
<div class="card shadow">
<div class="card-body">
<h5 class="mb-4">
گزارش تغییرات سیستم
</h5>
<div class="table-responsive">
<table class="table table-bordered text-center align-middle">
<thead class="table-light">
<tr>
<th>
شناسه
</th>
<th>شناسه</th>
<th>
مدیر
</th>
<th>مدیر</th>
<th>
عملیات
</th>
<th>عملیات</th>
<th>
بخش
</th>
<th>بخش</th>
<th>
شناسه مورد
</th>
<th>شناسه مورد</th>
<th>
توضیحات
</th>
<th>
تاریخ
</th>
<th>توضیحات</th>
<th>تاریخ</th>
</tr>
</thead>
<tbody>
@forelse($logs as $log)
<tr>
<td>
{{ $loop->iteration }}
</td>
@@ -89,7 +59,6 @@
</span>
@break
@case('update')
<span class="badge bg-warning">
ویرایش
@@ -103,7 +72,6 @@
</span>
@break
@default
{{ $log->action }}
@@ -133,14 +101,10 @@
{{ $log->model_id }}
</td>
<td>
{{ $log->description }}
</td>
<td>
{{ $log->created_at->toJalali()->format('Y/m/d H:i') }}
</td>
@@ -149,7 +113,6 @@
@empty
<tr>
<td colspan="7">
@@ -164,19 +127,14 @@
</tbody>
</table>
</div>
{{ $logs->links() }}
</div>
</div>
</div>
@endsection
@@ -1,5 +1,4 @@
@extends('admin.layouts.app')
@section('breadcrumb')
<div>
@@ -29,11 +28,8 @@
@section('content')
<div class="container-fluid pt-4">
<div class="card custom-card">
<div class="card-header">
<div class="card-title">
ایجاد ادمین جدید
</div>
@@ -260,13 +256,9 @@
>
ذخیره ادمین
</button>
</div>
</form>
</div>
</div>
@endsection
@@ -1,12 +1,10 @@
@extends('admin.layouts.app')
@section('breadcrumb')
<div>
<h1 class="page-title fw-medium fs-18 mb-2">
ویرایش ادمین
</h1>
<nav>
<ol class="breadcrumb mb-0">
@@ -19,7 +17,6 @@
<li class="breadcrumb-item active">
ویرایش ادمین
</li>
</ol>
</nav>
</div>
@@ -29,11 +26,8 @@
@section('content')
<div class="container-fluid pt-4">
<div class="card custom-card">
<div class="card-header">
<div class="card-title">
ویرایش ادمین
</div>
@@ -98,7 +92,6 @@
</div>
<div class="col-md-6">
<label class="form-label">
@@ -121,7 +114,6 @@
</div>
<div class="col-md-6">
<label class="form-label">
@@ -144,7 +136,6 @@
</div>
<div class="col-md-6">
<label class="form-label">
@@ -167,7 +158,6 @@
</div>
<div class="col-md-6">
<label class="form-label">
@@ -189,7 +179,6 @@
</div>
<div class="col-md-6">
<label class="form-label">
@@ -226,7 +215,6 @@
</div>
<div class="col-md-6">
<label class="form-label">
@@ -277,13 +265,9 @@
>
ذخیره تغییرات
</button>
</div>
</form>
</div>
</div>
@endsection
@@ -1,13 +1,9 @@
@extends('admin.layouts.app')
@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">
<div class="card-title">
لیست ادمین‌ها
</div>
@@ -20,11 +16,8 @@
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-hover text-center align-middle">
<thead>
<tr>
<th>نام</th>
@@ -39,9 +32,7 @@
<tbody>
@forelse($admins as $admin)
<tr>
<td>
{{ $admin->first_name }}
</td>
@@ -99,11 +90,9 @@
</div>
</td>
</tr>
@empty
<tr>
<td colspan="6">
ادمینی ثبت نشده است.
@@ -111,11 +100,8 @@
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="mt-3">
@@ -123,9 +109,7 @@
</div>
</div>
</div>
</div>
@endsection
@@ -1,17 +1,11 @@
@extends('admin.layouts.app')
@section('content')
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-5">
<div class="card shadow rounded-4">
<div class="card-body p-4">
<h3 class="text-center mb-4">
ورود مدیر
</h3>
@@ -19,12 +13,10 @@
<span style="color: #42a5f5"> {{$message}} </span>
@enderror
<form action="{{ route('admin.auth.login.post') }}" method="POST">
@csrf
<div class="mb-3">
<label>
@@ -44,7 +36,6 @@
</div>
<div class="mb-3">
<label>
@@ -60,25 +51,16 @@
<span style="color: #42a5f5"> {{$message}} </span>
@enderror
</div>
<button class="btn btn-primary w-100">
ورود
</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
-33
View File
@@ -1,10 +1,8 @@
<link rel="stylesheet" href="{{ asset('assets/css/register_login.css') }}">
@extends('layouts.app')
@section('content')
<div class="theme-hero-area">
<div class="theme-hero-area-bg-wrap">
<div
class="theme-hero-area-bg"
@@ -15,13 +13,9 @@
</div>
<div class="theme-hero-area-body">
<div class="theme-page-section _pt-100 theme-page-section-xl">
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="theme-login theme-login-white">
@@ -35,23 +29,18 @@
<p class="theme-login-subtitle">
وارد حساب Bookify خود شوید
</p>
</div>
<div class="theme-login-box">
<div class="theme-login-box-inner">
{{-- Login Form --}}
<form
class="theme-login-form"
action="{{ route('auth.login.post') }}"
method="POST"
>
@csrf
{{-- Mobile --}}
<div class="form-group theme-login-form-group">
<label>شماره موبایل</label>
<input
@@ -70,8 +59,6 @@
</div>
{{-- Password --}}
<div class="form-group theme-login-form-group">
<label>کلمه عبور</label>
@@ -90,8 +77,6 @@
</div>
{{-- General Error --}}
@error('general')
<div class="text-danger">
@@ -100,10 +85,7 @@
@enderror
{{-- Remember --}}
<div class="form-group">
<div class="theme-login-checkbox">
<label class="icheck-label">
@@ -126,7 +108,6 @@
</div>
{{-- Submit --}}
<button
type="submit"
class="btn btn-uc btn-dark btn-block btn-lg"
@@ -136,8 +117,6 @@
</form>
<div class="theme-login-box-alt">
<p>
@@ -148,12 +127,9 @@
</a>
</p>
</div>
</div>
<p class="theme-login-terms">
با ورود به سیستم،
@@ -162,7 +138,6 @@
</a>
<br>
و
<a href="#">
@@ -172,19 +147,11 @@
ما را می پذیرید.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
-16
View File
@@ -3,7 +3,6 @@
@extends('layouts.app')
@section('content')
<div class="theme-hero-area-bg-wrap">
<div class="theme-hero-area-bg"
style="background-image:url({{ asset('img/adult-book-business-cactus-297755_1500x800.jpg') }});">
@@ -13,11 +12,8 @@
</div>
<div class="theme-hero-area-body">
<div class="theme-page-section _pt-100 theme-page-section-xl">
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
@@ -79,7 +75,6 @@
</div>
<div class="mb-4">
<label
@@ -131,7 +126,6 @@
maxlength="10"
class="block w-full p-3 text-base outline-none placeholder:text-gray-400 sm:text-sm/6 transition-all text-gray-800 dark:text-gray-100 dark:bg-gray-900 bg-slate-100 border border-transparent hover:border-slate-200 appearance-none rounded-md focus:bg-white focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100"
>
</div>
@error('national_code')
@@ -186,7 +180,6 @@
</div>
<div class="col-md-6">
<label
@@ -237,7 +230,6 @@
</div>
<div class="mb-4">
<label
@@ -300,7 +292,6 @@
</div>
<div class="mb-4">
<label
@@ -332,7 +323,6 @@
</div>
<div class="mb-4">
<label
@@ -362,7 +352,6 @@
</div>
<div class="mb-4">
<label
@@ -473,7 +462,6 @@
</div>
<div class="mb-4">
<label
@@ -503,7 +491,6 @@
</div>
<div class="mb-4">
<label
@@ -527,7 +514,6 @@
</div>
<div class="mt-6">
<button
@@ -541,7 +527,6 @@
</form>
<p class="mt-8 text-center text-sm/6 text-gray-500 dark:text-gray-300">
حساب کاربری دارید؟
@@ -607,5 +592,4 @@
});
});
</script>
@endsection
+2 -6
View File
@@ -10,7 +10,6 @@
name="type"
value="App\Models\Flight">
<button class="btn btn-outline-danger">
❤️ افزودن به علاقه‌مندی
</button>
@@ -27,14 +26,12 @@
</div>
<div class="card-body d-flex flex-column">
<h5 class="fw-bold">
{{ $flight->airline }}
</h5>
<div class="route">
<span>{{ $flight->origin }}</span>
@@ -43,7 +40,6 @@
<span>{{ $flight->destination }}</span>
</div>
<div class="mt-auto d-flex justify-content-between align-items-center">
<strong>
@@ -56,7 +52,7 @@
</a>
</div>
</div>
</div></div>
</div>
</div>
-17
View File
@@ -2,20 +2,16 @@
<div class="card border-0 shadow-sm rounded-4 overflow-hidden h-100">
<form action="{{ route('users.favorite.store') }}" method="POST">
@csrf
<input type="hidden" name="id" value="{{ $tour->id }}">
<input type="hidden"
name="type"
value="App\Models\Tour">
<button class="btn btn-outline-danger">
❤️ افزودن به علاقه‌مندی
</button>
</form>
<div class="flight-image">
@@ -24,24 +20,18 @@
class="w-100 h-100 object-fit-cover"
alt="{{ $tour->airline }}">
<span class="flight-badge">
تور
</span>
</div>
<div class="card-body d-flex flex-column">
<h5 class="fw-bold">
{{ $tour->title }}
</h5>
<div class="route">
<span>
@@ -58,25 +48,18 @@
</div>
<div class="mt-auto d-flex justify-content-between align-items-center">
<strong>
{{ number_format($tour->price) }} تومان
</strong>
<a href="{{ route('tours.show',$tour) }}"
class="btn btn-primary rounded-pill">
مشاهده
</a>
</div>
</div>
</div>
</div>
+1 -42
View File
@@ -1,60 +1,39 @@
@extends('layouts.app')
@section('content')
<div class="container py-5">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2 class="fw-bold">
آرشیو پروازها ️
</h2>
</div>
<div class="row g-4">
@foreach($flights as $flight)
<div class="col-lg-4 col-md-6">
<div class="card h-100 shadow-sm border-0 rounded-4 overflow-hidden">
<div class="position-relative">
<img src="{{ getImageUrl($flight->image) }}"
class="card-img-top"
style="height:220px; object-fit:cover;"
alt="{{ $flight->airline }}">
<span class="position-absolute top-0 end-0 m-3 badge bg-primary">
{{ $flight->flight_class ?? 'Economy' }}
</span>
</div>
<div class="card-body">
<h5 class="fw-bold mb-3">
{{ $flight->airline }}
</h5>
<div class="text-muted mb-2">
<i class="bi bi-geo-alt"></i>
@@ -67,8 +46,6 @@
</div>
<div class="mb-2">
📅
@@ -77,11 +54,8 @@
</div>
<div class="d-flex justify-content-between align-items-center mt-4">
<strong class="text-primary fs-5">
{{ number_format($flight->price) }}
@@ -90,8 +64,6 @@
</strong>
<a href="{{route('index')}}"
class="btn btn-outline-primary rounded-pill">
@@ -99,34 +71,21 @@
</a>
</div>
</div>
</div>
</div>
</div>
@endforeach
</div>
<div class="mt-5 d-flex justify-content-center">
{{ $flights->links() }}
</div>
</div>
@endsection
+2 -3
View File
@@ -22,7 +22,6 @@
</span>
</div>
<div class="route-box">
<div>
@@ -43,7 +42,6 @@
</div>
<div class="flight-info-grid">
<div>
@@ -82,7 +80,8 @@
<button type="submit" class="btn btn-success">
رزرو تور
</button>
</form> @else
</form>
@else
<a href="{{ route('auth.login.index') }}" class="btn btn-warning btn-lg px-5">
برای رزرو وارد شوید
-1
View File
@@ -1,5 +1,4 @@
@extends('layouts.app')
@section('content')
<section class="container mt-5">
<h3 class="fw-bold mb-4">آخرین پروازها و تورها</h3>
+2 -27
View File
@@ -1,9 +1,6 @@
<footer class="travel-footer">
<div class="container">
<div class="row gy-5">
<div class="col-lg-4 col-md-6">
<h3 class="footer-logo">
@@ -17,15 +14,12 @@
</div>
<div class="col-lg-2 col-md-6">
<h5>
دسترسی سریع
</h5>
<ul>
<li>
@@ -35,25 +29,18 @@
</li>
<li>
<a href="/flights">
<a href="{{route('flights')}}">
پروازها
</a>
</li>
<li>
<a href="/tours">
<a href="{{route('tours.index')}}">
تورها
</a>
</li>
<li>
<a href="#">
تماس با ما
</a>
</li>
</ul>
</div>
@@ -64,8 +51,6 @@
<h5>
خدمات ما
</h5>
<ul>
<li>
@@ -88,8 +73,6 @@
</div>
<div class="col-lg-3 col-md-6">
<h5>
@@ -110,16 +93,10 @@
</p>
</div>
</div>
</div>
<hr>
<div class="footer-bottom">
<span>
@@ -131,7 +108,5 @@
</span>
</div>
</div>
</footer>
+1 -18
View File
@@ -1,12 +1,9 @@
<nav class="main-header">
<div class="container header-inner">
<a href="/" class="logo">
Travelio
</a>
<ul class="menu">
<li>
@@ -28,8 +25,6 @@
</li>
</ul>
<div class="header-actions">
@guest
@@ -44,22 +39,18 @@
@endguest
@auth
<div class="user-dropdown">
<button class="user-btn">
<i class="fa fa-user"></i>
{{ Auth::user()->first_name }}
{{getUserFullName()}}
<span>⌄</span>
</button>
<div class="user-menu">
<a href="{{ route('users.profile.edit') }}">
@@ -67,13 +58,11 @@
پروفایل
</a>
<a href="{{ route('users.favorite.index') }}">
<i class="fa fa-heart"></i>
علاقه‌مندی‌ها
</a>
<a href="{{ route('comments.index') }}">
<i class="fa fa-comments"></i>
نظرات قبلی
@@ -93,15 +82,9 @@
</button>
</form>
</div>
</div>
@endauth
</div>
</div>
</nav>
+1 -15
View File
@@ -1,27 +1,19 @@
<section class="flight-hero">
<div class="container">
<div class="flight-hero-content">
<span>
سفر بعدی شما از اینجا شروع می‌شود
</span>
<h1>
پرواز خود را
<span>پیدا کنید</span>
</h1>
<p>
مبدا، مقصد سفر خود را انتخاب کنید.
</p>
</div>
<div class="flight-search-card">
<div class="flight-search-header">
<div>
@@ -33,7 +25,6 @@
اطلاعات سفر خود را وارد کنید
</span>
</div>
<div class="flight-type">
<label>
@@ -52,8 +43,8 @@
type="radio"
name="trip_type"
value="round_trip"
checked
>
رفت و برگشت
</label>
@@ -61,7 +52,6 @@
</div>
<form action="{{ route('flights') }}" method="GET">
<select name="origin">
@@ -75,7 +65,6 @@
</select>
<select name="destination">
<option value="">مقصد</option>
@@ -87,16 +76,13 @@
</select>
<button type="submit">
جستجو
</button>
</form>
</div>
</div>
</section>
-21
View File
@@ -1,28 +1,17 @@
@extends('layouts.app')
@section('content')
<div class="container py-5">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2 class="fw-bold">
آرشیو تورها
</h2>
</div>
<div class="row g-4">
@foreach($tours as $tour)
<div class="col-lg-4 col-md-6">
<div class="card h-100 shadow-sm border-0 rounded-4 overflow-hidden">
<div class="position-relative">
<img
src="{{ getImageUrl($tour->image) }}"
class="card-img-top"
@@ -36,21 +25,18 @@
</div>
<div class="card-body d-flex flex-column">
<h5 class="fw-bold mb-3">
{{ $tour->title }}
</h5>
<p class="text-muted mb-3">
{{ $tour->summary }}
</p>
<div class="d-flex justify-content-between align-items-center mt-auto pt-3">
<strong class="text-primary fs-5">
@@ -62,15 +48,10 @@
</strong>
</div>
</div>
</div>
</div>
@endforeach
</div>
<div class="mt-4 d-flex justify-content-center">
@@ -87,7 +68,5 @@
{{$tours->links()}}
</div>
</div>
@endsection
-33
View File
@@ -3,38 +3,27 @@
@section('content')
<section class="container mt-5">
<div class="card border-0 shadow rounded-4 overflow-hidden mb-5">
<div class="tour-detail-image">
<img src="{{ $tour->image ? asset('storage/'.$tour->image) : asset('assets/img/placeholder.jpg') }}"
class="w-100 h-100 object-fit-cover"
alt="{{ $tour->airline }}">
<span class="badge bg-primary position-absolute top-0 end-0 m-4">
تور
</span>
</div>
<div class="card-body p-4">
<h1 class="fw-bold mb-3">
{{ $tour->title }}
</h1>
<p class="text-muted">
{{ $tour->summary }}
</p>
<hr>
<div class="row g-4">
<div class="col-md-4">
<div class="tour-info-box">
<span>نوع سفر</span>
@@ -54,7 +43,6 @@
</div>
</div>
<div class="col-md-4">
<div class="tour-info-box">
<span>قیمت</span>
@@ -64,23 +52,18 @@
</h5>
</div>
</div>
</div>
<hr>
<h4 class="fw-bold">
توضیحات تور
</h4>
<p>
{{ $tour->description }}
</p>
<div class="reserve-area mt-5">
@auth
@@ -109,7 +92,6 @@
رزرو تور
</button>
</form>
@else
@@ -122,10 +104,8 @@
</a>
@endauth
</div>
</div>
</div>
<div class="comment-box mb-5">
@@ -164,7 +144,6 @@
</div>
<div class="mb-3">
<textarea name="comment"
@@ -174,15 +153,11 @@
</div>
<button class="btn btn-primary rounded-pill px-5">
ثبت نظر
</button>
</form>
</div>
<div class="comment-box">
@@ -192,7 +167,6 @@
نظرات کاربران
</h3>
@forelse($comments as $comment)
<div class="comment-item">
@@ -203,7 +177,6 @@
{{ $comment->user ? $comment->user->first_name . ' ' . $comment->user->last_name : 'کاربر مهمان' }}
</strong>
<small>
{{ $comment->created_at->diffForHumans() }}
</small>
@@ -216,8 +189,6 @@
</p>
</div>
@empty
<div class="alert alert-secondary rounded-4">
@@ -226,12 +197,8 @@
@endforelse
</div>
</section>
@endsection