feat: final updates
This commit is contained in:
@@ -65,9 +65,18 @@
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>استان</label>
|
||||
<input type="text" name="province_id" class="form-control"
|
||||
value="{{ old('province', $user->province) }}" placeholder="استان">
|
||||
@error('province')
|
||||
<select name="province_id" id="province_id" class="form-control">
|
||||
<option value="">استان را انتخاب کنید</option>
|
||||
@foreach($provinces as $province)
|
||||
<option
|
||||
value="{{ $province->id }}"
|
||||
@selected(old('province_id', $user->province_id) == $province->id)
|
||||
>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('province_id')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
@@ -75,9 +84,16 @@
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>شهر</label>
|
||||
<input type="text" name="city" class="form-control"
|
||||
value="{{ old('city', $user->city) }}" placeholder="شهر">
|
||||
@error('city')
|
||||
<select name="city_id" id="city_id" class="form-control">
|
||||
@if($user->city)
|
||||
<option value="{{ $user->city->id }}" selected>
|
||||
{{ $user->city->name }}
|
||||
</option>
|
||||
@else
|
||||
<option value="">ابتدا استان را انتخاب کنید</option>
|
||||
@endif
|
||||
</select>
|
||||
@error('city_id')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
@@ -115,4 +131,31 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.getElementById('province_id').addEventListener('change', function () {
|
||||
const provinceId = this.value;
|
||||
const citySelect = document.getElementById('city_id');
|
||||
|
||||
citySelect.innerHTML = '<option value="">در حال بارگذاری...</option>';
|
||||
|
||||
if (!provinceId) {
|
||||
citySelect.innerHTML = '<option value="">ابتدا استان را انتخاب کنید</option>';
|
||||
return;
|
||||
}
|
||||
|
||||
fetch(`{{ route('account.cities-by-province', ':province') }}`.replace(':province', provinceId))
|
||||
.then(response => response.json())
|
||||
.then(cities => {
|
||||
citySelect.innerHTML = '<option value="">شهرستان خود را انتخاب کنید</option>';
|
||||
|
||||
cities.forEach(city => {
|
||||
const option = document.createElement('option');
|
||||
option.value = city.id;
|
||||
option.textContent = city.name;
|
||||
citySelect.appendChild(option);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -1,107 +1,191 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<div class="container-fluid pt-4">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
|
||||
<div class="card custom-card">
|
||||
<div class="card custom-card">
|
||||
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
لاگ تغییرات پرواز و تور
|
||||
</div>
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
لاگ تغییرات پرواز و تور
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body pt-0">
|
||||
<div class="card-body pt-0">
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap">
|
||||
<thead>
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>کاربر</th>
|
||||
<th>عملیات</th>
|
||||
<th>مربوط به</th>
|
||||
<th>تغییرات</th>
|
||||
<th>زمان</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($logs as $log)
|
||||
<tr>
|
||||
<th>کاربر</th>
|
||||
<th>عملیات</th>
|
||||
<th>مربوط به</th>
|
||||
<th>تغییرات</th>
|
||||
<th>زمان</th>
|
||||
<td>
|
||||
{{ optional($log->causer)->first_name ?? 'نامشخص' }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@switch($log->event)
|
||||
@case('created')
|
||||
<span class="badge bg-success-transparent">ایجاد</span>
|
||||
@break
|
||||
|
||||
@case('updated')
|
||||
<span class="badge bg-warning-transparent">ویرایش</span>
|
||||
@break
|
||||
|
||||
@case('deleted')
|
||||
<span class="badge bg-danger-transparent">حذف</span>
|
||||
@break
|
||||
|
||||
@default
|
||||
{{ $log->event }}
|
||||
@endswitch
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ $log->log_name === 'flights' ? 'پرواز' : 'تور' }}
|
||||
#{{ $log->subject_id }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@if($log->event === 'updated' && $log->changes)
|
||||
<ul class="mb-0 ps-3">
|
||||
|
||||
@foreach($log->changes['after'] as $field => $newValue)
|
||||
|
||||
@if(($log->changes['before'][$field] ?? null) != $newValue)
|
||||
|
||||
@php
|
||||
$oldValue = $log->changes['before'][$field] ?? null;
|
||||
@endphp
|
||||
|
||||
<li>
|
||||
@switch($field)
|
||||
|
||||
@case('title')
|
||||
عنوان:
|
||||
«{{ $oldValue }}»
|
||||
←
|
||||
«{{ $newValue }}»
|
||||
@break
|
||||
|
||||
@case('status')
|
||||
وضعیت:
|
||||
«{{ $oldValue == 1 ? 'فعال' : 'غیرفعال' }}»
|
||||
←
|
||||
«{{ $newValue == 1 ? 'فعال' : 'غیرفعال' }}»
|
||||
@break
|
||||
|
||||
@case('price')
|
||||
قیمت:
|
||||
«{{ number_format($oldValue) }}»
|
||||
←
|
||||
«{{ number_format($newValue) }}»
|
||||
@break
|
||||
|
||||
@case('capacity')
|
||||
ظرفیت:
|
||||
«{{ $oldValue }} نفر»
|
||||
←
|
||||
«{{ $newValue }} نفر»
|
||||
@break
|
||||
|
||||
@case('summary')
|
||||
خلاصه:
|
||||
«{{ $oldValue }}»
|
||||
←
|
||||
«{{ $newValue }}»
|
||||
@break
|
||||
|
||||
@case('description')
|
||||
توضیحات:
|
||||
«{{ $oldValue }}»
|
||||
←
|
||||
«{{ $newValue }}»
|
||||
@break
|
||||
|
||||
@case('flight_type')
|
||||
نوع پرواز:
|
||||
«{{ $oldValue == 1 ? 'یکطرفه' : 'رفت و برگشت' }}
|
||||
»
|
||||
←
|
||||
«{{ $newValue == 1 ? 'یکطرفه' : 'رفت و برگشت' }}
|
||||
»
|
||||
@break
|
||||
@case('departure_time')
|
||||
زمان رفت:
|
||||
«{{ $oldValue ? \Carbon\Carbon::parse($oldValue)->format('Y/m/d H:i') : '—' }}
|
||||
»
|
||||
به
|
||||
«{{ $newValue ? \Carbon\Carbon::parse($newValue)->format('Y/m/d H:i') : '—' }}
|
||||
»
|
||||
@break
|
||||
@case('return_time')
|
||||
زمان برگشت:
|
||||
«{{ $oldValue ? \Carbon\Carbon::parse($oldValue)->format('Y/m/d H:i') : '—' }}
|
||||
»
|
||||
به
|
||||
«{{ $newValue ? \Carbon\Carbon::parse($newValue)->format('Y/m/d H:i') : '—' }}
|
||||
»
|
||||
@break
|
||||
|
||||
@default
|
||||
{{ $field }}:
|
||||
«{{ $oldValue ?? '—' }}»
|
||||
←
|
||||
«{{ $newValue }}»
|
||||
|
||||
@endswitch
|
||||
</li>
|
||||
|
||||
@endif
|
||||
|
||||
@endforeach
|
||||
|
||||
</ul>
|
||||
|
||||
@elseif($log->event === 'created')
|
||||
ایجاد رکورد جدید
|
||||
|
||||
@else
|
||||
حذف رکورد
|
||||
@endif
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ $log->created_at->toJalali()->format('Y/m/d H:i') }}
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($logs as $log)
|
||||
<tr>
|
||||
<td>
|
||||
{{ optional($log->causer)->first_name ?? 'نامشخص' }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@switch($log->event)
|
||||
@case('created')
|
||||
<span class="badge bg-success-transparent">ایجاد</span>
|
||||
@break
|
||||
|
||||
@case('updated')
|
||||
<span class="badge bg-warning-transparent">ویرایش</span>
|
||||
@break
|
||||
|
||||
@case('deleted')
|
||||
<span class="badge bg-danger-transparent">حذف</span>
|
||||
@break
|
||||
|
||||
@default
|
||||
{{ $log->event }}
|
||||
@endswitch
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ $log->log_name === 'flights' ? 'پرواز' : 'تور' }}
|
||||
#{{ $log->subject_id }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
@if($log->event === 'updated' && $log->changes)
|
||||
<ul class="mb-0 ps-3">
|
||||
@foreach($log->changes['after'] as $field => $newValue)
|
||||
@if(($log->changes['before'][$field] ?? null) != $newValue)
|
||||
<li>
|
||||
{{ $field }}:
|
||||
«{{ $log->changes['before'][$field] ?? '—' }}»
|
||||
←
|
||||
«{{ $newValue }}»
|
||||
</li>
|
||||
@endif
|
||||
@endforeach
|
||||
</ul>
|
||||
@elseif($log->event === 'created')
|
||||
ایجاد رکورد جدید
|
||||
@else
|
||||
حذف رکورد
|
||||
@endif
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ verta($log->created_at)->format('Y/m/d H:i') }}
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="text-center">
|
||||
لاگی ثبت نشده است
|
||||
</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{{ $logs->links() }}
|
||||
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="text-center">
|
||||
لاگی ثبت نشده است
|
||||
</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{{ $logs->links() }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -124,8 +124,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت تور --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label fw-semibold">مدیریت تور</label>
|
||||
|
||||
@@ -168,50 +166,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت رزرو --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label fw-semibold">مدیریت رزرو</label>
|
||||
|
||||
<div class="d-flex gap-4 flex-wrap">
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[booking_view]"
|
||||
value="1"
|
||||
id="booking_view">
|
||||
<label class="form-check-label" for="booking_view">
|
||||
مشاهده رزرو
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[booking_edit]"
|
||||
value="1"
|
||||
id="booking_edit">
|
||||
<label class="form-check-label" for="booking_edit">
|
||||
ویرایش رزرو
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[booking_delete]"
|
||||
value="1"
|
||||
id="booking_delete">
|
||||
<label class="form-check-label" for="booking_delete">
|
||||
حذف رزرو
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت کاربران --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label fw-semibold">مدیریت کاربران</label>
|
||||
|
||||
@@ -254,7 +208,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت مدیران --}}
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label fw-semibold">مدیریت مدیران</label>
|
||||
|
||||
|
||||
@@ -124,7 +124,6 @@
|
||||
<div class="card-body">
|
||||
<div class="row gy-4">
|
||||
|
||||
{{-- مدیریت پروازها --}}
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<h6 class="fw-semibold mb-3">مدیریت پروازها</h6>
|
||||
|
||||
@@ -169,7 +168,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت تورها --}}
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<h6 class="fw-semibold mb-3">مدیریت تورها</h6>
|
||||
|
||||
@@ -214,52 +212,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت رزروها --}}
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<h6 class="fw-semibold mb-3">مدیریت رزروها</h6>
|
||||
|
||||
<div class="form-check mb-2">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[booking_view]"
|
||||
value="1"
|
||||
@checked($admin->permission?->booking_view)
|
||||
>
|
||||
<label class="form-check-label">
|
||||
مشاهده رزروها
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-check mb-2">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[booking_edit]"
|
||||
value="1"
|
||||
@checked($admin->permission?->booking_edit)
|
||||
>
|
||||
<label class="form-check-label">
|
||||
ویرایش رزرو
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-check mb-2">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
name="permissions[booking_delete]"
|
||||
value="1"
|
||||
@checked($admin->permission?->booking_delete)
|
||||
>
|
||||
<label class="form-check-label">
|
||||
حذف رزرو
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت کاربران --}}
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<h6 class="fw-semibold mb-3">مدیریت کاربران</h6>
|
||||
|
||||
@@ -304,7 +256,6 @@
|
||||
</div>
|
||||
|
||||
|
||||
{{-- مدیریت مدیران --}}
|
||||
<div class="col-xl-3 col-lg-6">
|
||||
<h6 class="fw-semibold mb-3">مدیریت مدیران</h6>
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<form action="{{ route('admin.cities.store') }}" method="POST">
|
||||
@csrf
|
||||
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">افزودن شهرستان</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body row gy-3">
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">نام شهرستان</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ old('name') }}">
|
||||
|
||||
@error('name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">استان</label>
|
||||
<select class="form-control" name="province_id">
|
||||
<option value="">یک استان انتخاب کنید</option>
|
||||
@foreach($provinces as $province)
|
||||
<option value="{{ $province->id }}" @selected(old('province_id') == $province->id)>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
@error('province_id')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ثبت</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,47 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<form action="{{ route('admin.cities.update', $city) }}" method="POST">
|
||||
@csrf
|
||||
@method('put')
|
||||
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">ویرایش شهرستان</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body row gy-3">
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">نام شهرستان</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ old('name', $city->name) }}">
|
||||
|
||||
@error('name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">استان</label>
|
||||
<select class="form-control" name="province_id">
|
||||
<option value="">یک استان انتخاب کنید</option>
|
||||
@foreach($provinces as $province)
|
||||
<option value="{{ $province->id }}" @selected(old('province_id', $city->province_id) == $province->id)>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
@error('province_id')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ذخیره تغییرات</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -1,3 +1,58 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('breadcrumb')<div><h1 class="page-title fw-medium fs-18 mb-1">مدیریت شهرها</h1></div>@endsection
|
||||
@section('content')<div class="container-fluid pt-4">@include('admin.partials.errors')<div class="card custom-card"><div class="card-body"><form method="GET"><div class="row g-2"><div class="col-md-5"><input class="form-control" name="search" value="{{ request('search') }}" placeholder="جستجوی شهر"></div><div class="col-md-3"><select class="form-control" name="province_id"><option value="">همه استانها</option>@foreach(($provinces ?? []) as $province)<option value="{{ $province->id }}" @selected((string)request('province_id')===(string)$province->id)>{{ $province->name }}</option>@endforeach</select></div><div class="col-md-2"><button class="btn btn-light w-100">جستجو</button></div><div class="col-md-2"><a href="{{ route('admin.cities.create') }}" class="btn btn-primary w-100">شهر جدید</a></div></div></form></div></div><div class="card custom-card mt-3"><div class="table-responsive"><table class="table"><thead><tr><th>#</th><th>شهر</th><th>استان</th><th>عملیات</th></tr></thead><tbody>@forelse(($cities ?? []) as $city)<tr><td>{{ $city->id }}</td><td>{{ $city->name }}</td><td>{{ $city->province->name ?? '-' }}</td><td><a href="{{ route('admin.cities.edit',$city) }}" class="btn btn-secondary-light btn-sm">ویرایش</a><form class="d-inline" method="POST" action="{{ route('admin.cities.destroy',$city) }}" onsubmit="return confirm('حذف شهر؟')">@csrf @method('DELETE')<button class="btn btn-danger-light btn-sm">حذف</button></form></td></tr>@empty<tr><td colspan="4" class="text-center text-muted py-5">شهری ثبت نشده است.</td></tr>@endforelse</tbody></table></div></div>{{ ($cities ?? collect())->links() }}</div>@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-header d-flex align-items-center justify-content-between">
|
||||
<div class="card-title">مدیریت شهرستانها</div>
|
||||
<a href="{{ route('admin.cities.create') }}" class="btn btn-primary btn-sm">
|
||||
افزودن شهرستان
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body pt-0">
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>نام شهرستان</th>
|
||||
<th>استان</th>
|
||||
<th>عملیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($cities as $city)
|
||||
<tr>
|
||||
<td>{{ $city->id }}</td>
|
||||
<td>{{ $city->name }}</td>
|
||||
<td>{{ optional($city->province)->name ?? '—' }}</td>
|
||||
<td>
|
||||
<a href="{{ route('admin.cities.edit', $city) }}" class="btn btn-sm btn-warning">
|
||||
ویرایش
|
||||
</a>
|
||||
|
||||
<form action="{{ route('admin.cities.destroy', $city) }}" method="POST" class="d-inline">
|
||||
@csrf
|
||||
@method('delete')
|
||||
<button type="submit" class="btn btn-sm btn-danger"
|
||||
onclick="return confirm('آیا مطمئن هستید؟')">
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="4" class="text-center">شهرستانی ثبت نشده است</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{{ $cities->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -231,8 +231,8 @@
|
||||
<tbody>
|
||||
@forelse($recentVisits as $visit)
|
||||
<tr>
|
||||
<td>{{ verta($visit->created_at)->format('Y/m/d') }}</td>
|
||||
<td>{{ verta($visit->created_at)->format('H:i') }}</td>
|
||||
<td>{{ $visit->created_at->toJalali()->format('Y/m/d') }}</td>
|
||||
<td>{{ $visit->created_at->toJalali()->format('H:i') }}</td>
|
||||
<td>{{ $visit->ip_address ?? '—' }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
|
||||
@@ -203,6 +203,35 @@
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<!-- Return Time -->
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">زمان برگشت (اختیاری)</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="return_time_jalali"
|
||||
id="return_time_jalali"
|
||||
data-jdp
|
||||
data-jdp-target-value-input="#return_time_gregorian"
|
||||
data-jdp-target-value-type="gregorian"
|
||||
autocomplete="off"
|
||||
placeholder="مثلاً 1403/06/02 18:00"
|
||||
value="{{ old('return_time_jalali') }}"
|
||||
>
|
||||
|
||||
<input
|
||||
type="hidden"
|
||||
name="return_time"
|
||||
id="return_time_gregorian"
|
||||
value="{{ old('return_time') }}"
|
||||
>
|
||||
|
||||
@error('return_time')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Price -->
|
||||
<div class="col-xl-6">
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
data-jdp-target-value-type="gregorian"
|
||||
autocomplete="off"
|
||||
placeholder="مثلاً 1403/05/29 14:30"
|
||||
value="{{ old('departure_time_jalali', $flight->departure_time ? verta($flight->departure_time)->format('Y/m/d H:i') : '') }}"
|
||||
value="{{ old('departure_time_jalali', $flight->departure_time->toJalali()->format('Y/m/d H:i')) }}"
|
||||
>
|
||||
|
||||
<input
|
||||
@@ -187,6 +187,35 @@
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<!-- Return Time -->
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">زمان برگشت (اختیاری)</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="return_time_jalali"
|
||||
id="return_time_jalali"
|
||||
data-jdp
|
||||
data-jdp-target-value-input="#return_time_gregorian"
|
||||
data-jdp-target-value-type="gregorian"
|
||||
autocomplete="off"
|
||||
placeholder="مثلاً 1403/06/02 18:00"
|
||||
value="{{ old('return_time_jalali', $flight->return_time ? $flight->return_time->toJalali()->format('Y/m/d H:i') : '') }}"
|
||||
>
|
||||
|
||||
<input
|
||||
type="hidden"
|
||||
name="return_time"
|
||||
id="return_time_gregorian"
|
||||
value="{{ old('return_time', optional($flight->return_time)->format('Y-m-d H:i:s')) }}"
|
||||
>
|
||||
|
||||
@error('return_time')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<!-- Price -->
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">قیمت</label>
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
<th>ایرلاین</th>
|
||||
<th>نوع پرواز</th>
|
||||
<th>زمان حرکت</th>
|
||||
<th>زمان برگشت</th>
|
||||
<th>مبدا</th>
|
||||
<th>مقصد</th>
|
||||
<th>قیمت</th>
|
||||
@@ -214,7 +215,11 @@
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ $flight->departure_time->toJalali()->format('H:i Y-m-d') }}
|
||||
{{ $flight->departure_time->toJalali()->format('H:i Y-m-d') ?? '—' }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ $flight->return_time ? $flight->return_time->toJalali()->format('H:i Y-m-d') : '—' }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
</div>
|
||||
<ul class="main-menu mx-0">
|
||||
<!-- Start::slide -->
|
||||
<!-- داشبورد -->
|
||||
|
||||
<li class="slide">
|
||||
<a href="{{route('admin.dashboard.index')}}"
|
||||
class="side-menu__item {{activeAdminSidebar('admin.dashboard.index')}}">
|
||||
@@ -40,7 +40,6 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<!-- مدیریت کاربران -->
|
||||
@if(auth('admin')->user()->permission?->admin_view)
|
||||
<li class="slide">
|
||||
<a href="{{ route('admin.users.index') }}"
|
||||
@@ -51,7 +50,6 @@
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<!-- مدیریت تورها -->
|
||||
@if(auth('admin')->user()->permission?->admin_view)
|
||||
<li class="slide">
|
||||
<a href="{{ route('admin.tours.index') }}"
|
||||
@@ -62,7 +60,6 @@
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<!-- مدیریت پروازها -->
|
||||
@if(auth('admin')->user()->permission?->admin_view)
|
||||
<li class="slide">
|
||||
<a href="{{ route('admin.flights.index') }}"
|
||||
@@ -74,7 +71,6 @@
|
||||
@endif
|
||||
|
||||
|
||||
<!-- مدیریت مدیران -->
|
||||
@if(auth('admin')->user()->permission?->admin_view)
|
||||
<li class="slide active">
|
||||
<a href="{{route('admin.admins.index')}}"
|
||||
@@ -85,7 +81,23 @@
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<!-- مدیریت اطلاعات -->
|
||||
|
||||
<li class="slide">
|
||||
<a href="{{ route('admin.provinces.index') }}"
|
||||
class="side-menu__item {{activeAdminSidebar(['admin.provinces.index', 'admin.provinces.create', 'admin.provinces.edit'])}}">
|
||||
<i class="ri-map-pin-line side-menu__icon"></i>
|
||||
<span class="side-menu__label">مدیریت استانها</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="slide">
|
||||
<a href="{{ route('admin.cities.index') }}"
|
||||
class="side-menu__item {{activeAdminSidebar(['admin.cities.index', 'admin.cities.create', 'admin.cities.edit'])}}">
|
||||
<i class="ri-building-line side-menu__icon"></i>
|
||||
<span class="side-menu__label">مدیریت شهرستانها</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="slide">
|
||||
<a href="{{ route('admin.activity-logs.index') }}"
|
||||
class="side-menu__item {{activeAdminSidebar('admin.activity-logs.index')}}">
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<form action="{{ route('admin.provinces.store') }}" method="POST">
|
||||
@csrf
|
||||
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">افزودن استان</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<label class="form-label">نام استان</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ old('name') }}">
|
||||
|
||||
@error('name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ثبت</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,31 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="main-content app-content">
|
||||
<div class="container-fluid pt-4">
|
||||
<form action="{{ route('admin.provinces.update', $province) }}" method="POST">
|
||||
@csrf
|
||||
@method('put')
|
||||
|
||||
<div class="card custom-card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">ویرایش استان</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<label class="form-label">نام استان</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ old('name', $province->name) }}">
|
||||
|
||||
@error('name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="card-footer text-end">
|
||||
<button type="submit" class="btn btn-primary">ذخیره تغییرات</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -1,3 +1,58 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('breadcrumb')<div><h1 class="page-title fw-medium fs-18 mb-1">مدیریت استانها</h1></div>@endsection
|
||||
@section('content')<div class="container-fluid pt-4">@include('admin.partials.errors')<div class="card custom-card"><div class="card-body"><form method="GET"><div class="row g-2"><div class="col-md-8"><input class="form-control" name="search" value="{{ request('search') }}" placeholder="جستجوی استان"></div><div class="col-md-2"><button class="btn btn-light w-100">جستجو</button></div><div class="col-md-2"><a href="{{ route('admin.provinces.create') }}" class="btn btn-primary w-100">استان جدید</a></div></div></form></div></div><div class="card custom-card mt-3"><div class="table-responsive"><table class="table"><thead><tr><th>#</th><th>استان</th><th>عملیات</th></tr></thead><tbody>@forelse(($provinces ?? []) as $province)<tr><td>{{ $province->id }}</td><td>{{ $province->name }}</td><td><a href="{{ route('admin.provinces.edit',$province) }}" class="btn btn-secondary-light btn-sm">ویرایش</a><form class="d-inline" method="POST" action="{{ route('admin.provinces.destroy',$province) }}" onsubmit="return confirm('حذف استان؟')">@csrf @method('DELETE')<button class="btn btn-danger-light btn-sm">حذف</button></form></td></tr>@empty<tr><td colspan="3" class="text-center text-muted py-5">استانی ثبت نشده است.</td></tr>@endforelse</tbody></table></div></div>{{ ($provinces ?? collect())->links() }}</div>@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid pt-4">
|
||||
<div class="card custom-card">
|
||||
<div class="card-header d-flex align-items-center justify-content-between">
|
||||
<div class="card-title">مدیریت استانها</div>
|
||||
<a href="{{ route('admin.provinces.create') }}" class="btn btn-primary btn-sm">
|
||||
افزودن استان
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body pt-0">
|
||||
<div class="table-responsive">
|
||||
<table class="table text-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>نام استان</th>
|
||||
<th>تعداد شهرستان</th>
|
||||
<th>عملیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($provinces as $province)
|
||||
<tr>
|
||||
<td>{{ $province->id }}</td>
|
||||
<td>{{ $province->name }}</td>
|
||||
<td>{{ $province->cities_count }}</td>
|
||||
<td>
|
||||
<a href="{{ route('admin.provinces.edit', $province) }}" class="btn btn-sm btn-warning">
|
||||
ویرایش
|
||||
</a>
|
||||
|
||||
<form action="{{ route('admin.provinces.destroy', $province) }}" method="POST" class="d-inline">
|
||||
@csrf
|
||||
@method('delete')
|
||||
<button type="submit" class="btn btn-sm btn-danger"
|
||||
onclick="return confirm('آیا مطمئن هستید؟')">
|
||||
حذف
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="4" class="text-center">استانی ثبت نشده است</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{{ $provinces->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -63,6 +63,41 @@
|
||||
<span style="color: red">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">استان</label>
|
||||
<select name="province_id" id="province_id" class="form-control">
|
||||
<option value="">استان را انتخاب کنید</option>
|
||||
@foreach($provinces as $province)
|
||||
<option
|
||||
value="{{ $province->id }}"
|
||||
@selected(old('province_id', $user->province_id) == $province->id)
|
||||
>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('province_id')
|
||||
<span style="color: red">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">شهرستان</label>
|
||||
<select name="city_id" id="city_id" class="form-control">
|
||||
@if($user->city)
|
||||
<option value="{{ $user->city->id }}" selected>
|
||||
{{ $user->city->name }}
|
||||
</option>
|
||||
@else
|
||||
<option value="">ابتدا استان را انتخاب کنید</option>
|
||||
@endif
|
||||
</select>
|
||||
@error('city_id')
|
||||
<span style="color: red">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6">
|
||||
<label class="form-label">رمز عبور (در صورت تغییر)</label>
|
||||
<input type="text" class="form-control" name="password"
|
||||
@@ -84,5 +119,31 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
<script>
|
||||
document.getElementById('province_id').addEventListener('change', function () {
|
||||
const provinceId = this.value;
|
||||
const citySelect = document.getElementById('city_id');
|
||||
|
||||
citySelect.innerHTML = '<option value="">در حال بارگذاری...</option>';
|
||||
|
||||
if (!provinceId) {
|
||||
citySelect.innerHTML = '<option value="">ابتدا استان را انتخاب کنید</option>';
|
||||
return;
|
||||
}
|
||||
|
||||
fetch(`/admin/users/cities-by-province/${provinceId}`)
|
||||
.then(response => response.json())
|
||||
.then(cities => {
|
||||
citySelect.innerHTML = '<option value="">شهرستان خود را انتخاب کنید</option>';
|
||||
|
||||
cities.forEach(city => {
|
||||
const option = document.createElement('option');
|
||||
option.value = city.id;
|
||||
option.textContent = city.name;
|
||||
citySelect.appendChild(option);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -191,10 +191,10 @@
|
||||
{{ $user->email }}
|
||||
</td>
|
||||
<td>
|
||||
{{$user->province}}
|
||||
{{ $user->province?->name ?? '-' }}
|
||||
</td>
|
||||
<td>
|
||||
{{$user->city}}
|
||||
{{ $user->city?->name ?? '-' }}
|
||||
</td>
|
||||
<td>
|
||||
{{ $user->mobile }}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<i class="far fa-user"></i>
|
||||
</div>
|
||||
@error('first_name')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
<label>جنسیت</label>
|
||||
<div class="form-group-icon">
|
||||
<select name="gender" class="form-control">
|
||||
<option value="">جنسیت را انتخاب کنید</option>
|
||||
<option value="" selected>جنسیت را انتخاب کنید</option>
|
||||
<option value="{{ \App\Enums\UserGenderStatus::MALE->value }}"
|
||||
{{ old('gender') == \App\Enums\UserGenderStatus::MALE->value ? 'selected' : '' }}>
|
||||
مرد
|
||||
@@ -149,20 +149,20 @@
|
||||
<div class="form-group-icon">
|
||||
<select name="marital_status" class="form-control">
|
||||
|
||||
<option value="">وضعیت تأهل را انتخاب کنید</option>
|
||||
<option value="" selected>وضعیت تأهل را انتخاب کنید</option>
|
||||
|
||||
<option value="{{ \App\Enums\UserMaritalStatus::SINGLE->value }}"
|
||||
{{ old('marital_status') == \App\Enums\UserMaritalStatus::SINGLE->value ? 'selected' : '' }}>
|
||||
<option value="{{ \App\Enums\UserMaritalStatus::SINGLE }}"
|
||||
{{ old('marital_status') == \App\Enums\UserMaritalStatus::SINGLE ? 'selected' : '' }}>
|
||||
مجرد
|
||||
</option>
|
||||
|
||||
<option value="{{ \App\Enums\UserMaritalStatus::MARRIED->value }}"
|
||||
{{ old('marital_status') == \App\Enums\UserMaritalStatus::MARRIED->value ? 'selected' : '' }}>
|
||||
<option value="{{ \App\Enums\UserMaritalStatus::MARRIED }}"
|
||||
{{ old('marital_status') == \App\Enums\UserMaritalStatus::MARRIED ? 'selected' : '' }}>
|
||||
متأهل
|
||||
</option>
|
||||
|
||||
<option value="{{ \App\Enums\UserMaritalStatus::SEPARATED->value }}"
|
||||
{{ old('marital_status') == \App\Enums\UserMaritalStatus::SEPARATED->value ? 'selected' : '' }}>
|
||||
<option value="{{ \App\Enums\UserMaritalStatus::SEPARATED }}"
|
||||
{{ old('marital_status') == \App\Enums\UserMaritalStatus::SEPARATED ? 'selected' : '' }}>
|
||||
متارکه
|
||||
</option>
|
||||
|
||||
@@ -204,15 +204,17 @@
|
||||
<small class="text-muted">(اختیاری)</small>
|
||||
</label>
|
||||
<div class="form-group-icon">
|
||||
<input type="text"
|
||||
id="province"
|
||||
name="province"
|
||||
class="form-control"
|
||||
placeholder="استان خود را وارد کنید"
|
||||
value="{{ old('province') }}">
|
||||
<select name="province_id" id="province_id" class="form-control">
|
||||
<option value="">استان خود را انتخاب کنید</option>
|
||||
@foreach($provinces as $province)
|
||||
<option value="{{ $province->id }}" @selected(old('province_id') == $province->id)>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<i class="far fa-map-marker-alt"></i>
|
||||
</div>
|
||||
@error('province')
|
||||
@error('province_id')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
@@ -224,15 +226,12 @@
|
||||
<small class="text-muted">(اختیاری)</small>
|
||||
</label>
|
||||
<div class="form-group-icon">
|
||||
<input type="text"
|
||||
id="city"
|
||||
name="city"
|
||||
class="form-control"
|
||||
placeholder="شهرستان خود را وارد کنید"
|
||||
value="{{ old('city') }}">
|
||||
<select name="city_id" id="city_id" class="form-control">
|
||||
<option value="">ابتدا استان را انتخاب کنید</option>
|
||||
</select>
|
||||
<i class="far fa-map-marker-alt"></i>
|
||||
</div>
|
||||
@error('city')
|
||||
@error('city_id')
|
||||
<span class="text-danger">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
@@ -329,4 +328,31 @@
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
document.getElementById('province_id').addEventListener('change', function () {
|
||||
const provinceId = this.value;
|
||||
const citySelect = document.getElementById('city_id');
|
||||
|
||||
citySelect.innerHTML = '<option value="">در حال بارگذاری...</option>';
|
||||
|
||||
if (!provinceId) {
|
||||
citySelect.innerHTML = '<option value="">ابتدا استان را انتخاب کنید</option>';
|
||||
return;
|
||||
}
|
||||
|
||||
fetch(`/auth/cities-by-province/${provinceId}`)
|
||||
.then(response => response.json())
|
||||
.then(cities => {
|
||||
citySelect.innerHTML = '<option value="">شهرستان خود را انتخاب کنید</option>';
|
||||
|
||||
cities.forEach(city => {
|
||||
const option = document.createElement('option');
|
||||
option.value = city.id;
|
||||
option.textContent = city.name;
|
||||
citySelect.appendChild(option);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -4,31 +4,36 @@
|
||||
|
||||
<div class="search-box flight-search">
|
||||
<div class="search-form">
|
||||
<form action="{{ route('flights.index') }}" method="GET">
|
||||
|
||||
<form action="{{ route('flights.index') }}" method="GET">
|
||||
|
||||
<div class="flight-search-wrapper">
|
||||
<div class="flight-search-content">
|
||||
|
||||
{{-- مبدا --}}
|
||||
<div class="flight-search-item">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group">
|
||||
<label>از</label>
|
||||
|
||||
<div class="form-group-icon">
|
||||
<input type="text"
|
||||
name="from-destination"
|
||||
class="form-control swap-from"
|
||||
value="{{ request('from-destination') }}">
|
||||
|
||||
<i class="fal fa-plane-departure"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-lg-3">
|
||||
{{-- مقصد --}}
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group">
|
||||
|
||||
<div class="search-form-swap">
|
||||
<i class="far fa-repeat"></i>
|
||||
</div>
|
||||
@@ -40,13 +45,16 @@
|
||||
name="to-destination"
|
||||
class="form-control swap-to"
|
||||
value="{{ request('to-destination') }}">
|
||||
|
||||
<i class="fal fa-plane-arrival"></i>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
|
||||
{{-- مسافر --}}
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group dropdown passenger-box">
|
||||
|
||||
<div class="passenger-class"
|
||||
@@ -54,103 +62,111 @@
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
|
||||
<label>مسافر، کلاس</label>
|
||||
<label>مسافر</label>
|
||||
|
||||
<div class="form-group-icon">
|
||||
|
||||
<div class="passenger-total">
|
||||
|
||||
<span class="passenger-total-amount">
|
||||
{{ request('adult', 2) + request('children', 0) + request('infant', 0) }}
|
||||
</span>
|
||||
Passenger
|
||||
|
||||
مسافر
|
||||
|
||||
</div>
|
||||
|
||||
<i class="fal fa-user-plus"></i>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- dropdown مسافران --}}
|
||||
<div class="dropdown-menu dropdown-menu-end">
|
||||
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
|
||||
<div class="passenger-info">
|
||||
<h6>بزرگسالان</h6>
|
||||
<p>12+ سال</p>
|
||||
{{-- بزرگسال --}}
|
||||
<div
|
||||
class="passenger-item d-flex justify-content-between align-items-center">
|
||||
|
||||
<div>
|
||||
<strong>بزرگسال</strong>
|
||||
<small class="d-block text-muted">
|
||||
بالای ۱۲ سال
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn">
|
||||
<i class="far fa-minus"></i>
|
||||
</button>
|
||||
<input type="number"
|
||||
name="adult"
|
||||
class="form-control"
|
||||
value="{{ request('adult', 2) }}"
|
||||
min="1">
|
||||
</div>
|
||||
|
||||
<input type="text"
|
||||
name="adult"
|
||||
class="qty-amount passenger-adult"
|
||||
value="{{ request('adult', 2) }}"
|
||||
readonly>
|
||||
|
||||
<button type="button" class="plus-btn">
|
||||
<i class="far fa-plus"></i>
|
||||
</button>
|
||||
{{-- کودک --}}
|
||||
<div
|
||||
class="passenger-item d-flex justify-content-between align-items-center mt-2">
|
||||
|
||||
<div>
|
||||
<strong>کودک</strong>
|
||||
<small class="d-block text-muted">
|
||||
۲ تا ۱۲ سال
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<input type="number"
|
||||
name="children"
|
||||
class="form-control"
|
||||
value="{{ request('children', 0) }}"
|
||||
min="0">
|
||||
</div>
|
||||
|
||||
|
||||
{{-- نوزاد --}}
|
||||
<div
|
||||
class="passenger-item d-flex justify-content-between align-items-center mt-2">
|
||||
|
||||
<div>
|
||||
<strong>نوزاد</strong>
|
||||
<small class="d-block text-muted">
|
||||
زیر ۲ سال
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<input type="number"
|
||||
name="infant"
|
||||
class="form-control"
|
||||
value="{{ request('infant', 0) }}"
|
||||
min="0">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="dropdown-item">
|
||||
<div class="passenger-item">
|
||||
|
||||
<div class="passenger-info">
|
||||
<h6>بچه ها</h6>
|
||||
<p>2-12 سال</p>
|
||||
</div>
|
||||
|
||||
<div class="passenger-qty">
|
||||
<button type="button" class="minus-btn">
|
||||
<i class="far fa-minus"></i>
|
||||
</button>
|
||||
|
||||
<input type="text"
|
||||
name="children"
|
||||
class="qty-amount passenger-children"
|
||||
value="{{ request('children', 0) }}"
|
||||
readonly>
|
||||
|
||||
<button type="button" class="plus-btn">
|
||||
<i class="far fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-btn mt-3">
|
||||
|
||||
<button type="submit" class="theme-btn">
|
||||
|
||||
<span class="far fa-search"></span>
|
||||
|
||||
جستجو کردن
|
||||
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="search-btn">
|
||||
<button type="submit" class="theme-btn">
|
||||
<span class="far fa-search"></span>
|
||||
جستجو کردن
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -17,9 +17,17 @@
|
||||
<div class="listing-content">
|
||||
|
||||
<div class="listing-slider owl-carousel owl-theme" dir="ltr">
|
||||
<img
|
||||
src="{{ $flight->file ? asset('storage/'.$flight->file->path) : asset('assets/img/flight/single-1.jpg') }}"
|
||||
alt>
|
||||
@if($flight?->file_id)
|
||||
<img
|
||||
src="{{ getFileUrl($flight->file_id) }}"
|
||||
alt="{{ $flight->title }}"
|
||||
>
|
||||
@else
|
||||
<img
|
||||
src="{{ asset('assets/img/flight/01.jpg') }}"
|
||||
alt="{{ $flight->title }}"
|
||||
>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="listing-header">
|
||||
@@ -96,20 +104,23 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-eye"></i>
|
||||
</div>
|
||||
<div class="listing-feature-content">
|
||||
<h6>بازدید این پرواز</h6>
|
||||
<span>{{ number_format($flight->views) }} بازدید</span>
|
||||
|
||||
@if($flight->return_time)
|
||||
<div class="col-md-6 col-lg-3">
|
||||
<div class="listing-feature">
|
||||
<div class="listing-feature-icon">
|
||||
<i class="far fa-calendar-check"></i>
|
||||
</div>
|
||||
<div class="listing-feature-content">
|
||||
<h6>تاریخ برگشت</h6>
|
||||
<span>{{ $flight->return_time->toJalali()->format('Y/m/d') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($flight->summary)
|
||||
<div class="listing-item">
|
||||
<h4 class="mb-3">درباره این پرواز</h4>
|
||||
|
||||
@@ -23,14 +23,16 @@
|
||||
|
||||
{{-- Slider --}}
|
||||
<div class="listing-slider owl-carousel owl-theme" dir="ltr">
|
||||
|
||||
<img
|
||||
src="{{ $tour->file
|
||||
? asset('storage/' . $tour->file->path)
|
||||
: asset('assets/img/tour/01.jpg') }}"
|
||||
alt="{{ $tour->title }}"
|
||||
>
|
||||
|
||||
@if(getFileUrl($tour?->file?->id))
|
||||
<img
|
||||
src="{{ getFileUrl($tour?->file?->id) }}"
|
||||
alt="{{ $tour->title }}"
|
||||
style=""
|
||||
>
|
||||
@else
|
||||
<img src="{{ asset('assets/img/tour/02.jpg') }}" alt
|
||||
style="">
|
||||
@endif
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user