diff --git a/app/Http/Controllers/Admin/AdminController.php b/app/Http/Controllers/Admin/AdminController.php index 5524e47..e9b95e6 100644 --- a/app/Http/Controllers/Admin/AdminController.php +++ b/app/Http/Controllers/Admin/AdminController.php @@ -2,8 +2,11 @@ namespace App\Http\Controllers\Admin; +use App\Enums\Admin\AdminRole; +use App\Enums\Admin\AdminStatus; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\AdminStoreRequest; +use App\Http\Requests\Admin\AdminUpdateRequest; use App\Models\Admin; use App\Models\AdminAvatar; use App\Models\AdminPermission; @@ -80,7 +83,152 @@ class AdminController extends Controller public function edit(Admin $admin) { - return view('admin.admins.edit', compact('admin')); + $title = 'جزئیات مدیر'; + $loggedInAdmin = auth('admin')->user(); + + $canEditSensitiveFields = $loggedInAdmin->isSuperAdmin() && $loggedInAdmin->id !== $admin->id; + + $showReadonlySensitiveFields = $loggedInAdmin->id === $admin->id; + + $adminRoles = AdminRole::cases(); + + $adminStatuses = AdminStatus::cases(); + + $admin->load([ + 'avatar.file', + 'permissions', + ]); + return view('admin.admins.edit', compact( + 'title', + 'admin', + 'adminRoles', + 'adminStatuses', + 'canEditSensitiveFields', + 'showReadonlySensitiveFields' + )); + + } + + public function update(AdminUpdateRequest $request,Admin $admin) + { + $data = $request->validated(); + + $newAvatarPath = null; + $oldFile = null; + + DB::beginTransaction(); + + try { + $updateData = [ + 'first_name' => $data['first_name'], + 'last_name' => $data['last_name'], + 'username' => $data['username'], + 'email' => $data['email'] ?? null, + 'mobile' => $data['mobile'] ?? null, + ]; + + if (!empty($data['password'])) { + $updateData['password'] = Hash::make($data['password']); + } + + $loggedInAdmin = auth('admin')->user(); + + + $canEditSensitiveFields = + $loggedInAdmin->isSuperAdmin() + && $loggedInAdmin->id !== $admin->id; + + if ($canEditSensitiveFields) { + if (array_key_exists('role', $data)) { + $updateData['role'] = $data['role']; + } + + if (array_key_exists('status', $data)) { + $updateData['status'] = $data['status']; + } + } + + $admin->update($updateData); + + if ($canEditSensitiveFields && array_key_exists('permissions', $data)) { + $admin->permissions()->delete(); + + if (!$admin->isSuperAdmin()) { + foreach ($data['permissions'] ?? [] as $permission) { + $admin->permissions()->create([ + 'permission' => $permission, + ]); + } + } + } + + + if ($request->hasFile('image')) { + $oldAvatar = $admin->avatar() + ->with('file') + ->first(); + + $oldFile = $oldAvatar?->file; + + $image = $data['image']; + + $imageName = $admin->id + . '_' . time() . rand(11111, 99999) . '.' . $image->extension(); + + $newAvatarPath = $image->storeAs( + 'admin_avatars', + $imageName, + 'public' + ); + + $file = File::create([ + 'name' => $imageName, + 'size' => $image->getSize(), + 'original_name' => $image->getClientOriginalName(), + 'path' => $newAvatarPath, + 'extension' => $image->extension(), + ]); + + if ($oldAvatar) { + $oldAvatar->update([ + 'file_id' => $file->id, + ]); + } else { + AdminAvatar::create([ + 'admin_id' => $admin->id, + 'file_id' => $file->id, + ]); + } + } + + DB::commit(); + + if ($oldFile) { + deleteFile($oldFile); + } + + $redirectRoute = $loggedInAdmin->isSuperAdmin() + ? 'admin.admins.index' + : 'admin.profile.index'; + + return redirect() + ->route($redirectRoute) + ->with('success', 'اطلاعات مدیر با موفقیت ویرایش شد.'); + + } catch (\Exception $exception) { + DB::rollBack(); + + + if ($newAvatarPath && Storage::disk('public')->exists($newAvatarPath)) { + Storage::disk('public')->delete($newAvatarPath); + } + + Log::error($exception); + + return back() + ->withInput() + ->with('error', 'ویرایش مدیر با خطا مواجه شد.'); + } } public function create() @@ -113,13 +261,7 @@ class AdminController extends Controller if ($request->hasFile('image')) { $image = $request->file('image'); - $imageName = $admin->id - . '_' - . time() - . '_' - . rand(11111, 99999) - . '.' - . $image->extension(); + $imageName = $admin->id . '_' . time() . '_' . rand(11111, 99999) . '.' . $image->extension(); $avatarPath = $image->storeAs( 'admin_avatars', @@ -172,7 +314,6 @@ class AdminController extends Controller ->withInput( $request->except([ 'password', - 'password_confirmation', 'image', ]) ) diff --git a/app/Http/Middleware/Admin/CheckAdminPermission.php b/app/Http/Middleware/Admin/CheckAdminPermission.php index 0d6ab1f..711b5cf 100644 --- a/app/Http/Middleware/Admin/CheckAdminPermission.php +++ b/app/Http/Middleware/Admin/CheckAdminPermission.php @@ -17,7 +17,7 @@ class CheckAdminPermission { $admin = auth('admin')->user(); - if (! auth('admin')->user()?->hasPermission($permission)) { + if (! auth('admin')->user()?->canAccess($permission)) { abort(403); } diff --git a/app/Http/Requests/Admin/AdminUpdateRequest.php b/app/Http/Requests/Admin/AdminUpdateRequest.php new file mode 100644 index 0000000..71fec64 --- /dev/null +++ b/app/Http/Requests/Admin/AdminUpdateRequest.php @@ -0,0 +1,103 @@ +|string> + */ + public function rules(): array + { + $admin = $this->route('admin'); + return [ + 'first_name' => [ + 'required', + 'string', + 'max:64', + 'persianAlpha', + ], + + 'last_name' => [ + 'required', + 'string', + 'max:64', + 'persianAlpha', + ], + + 'username' => [ + 'required', + 'string', + 'min:3', + 'max:100', + 'regex:/^[a-zA-Z][a-zA-Z0-9_]*$/', + Rule::unique('admins', 'username')->ignore($admin), + ], + + 'email' => [ + 'nullable', + 'string', + 'email', + 'max:150', + Rule::unique('admins', 'email')->ignore($admin), + ], + + 'mobile' => [ + 'nullable', + 'string', + 'regex:/^09\d{9}$/', + 'ir_mobile:zero', + Rule::unique('admins', 'mobile')->ignore($admin), + ], + 'password' => [ + 'nullable', + 'string', + 'min:8', + 'max:255', + ], + + 'role' => [ + 'nullable', + Rule::enum(AdminRole::class), + ], + + 'status' => [ + 'nullable', + Rule::enum(AdminStatus::class), + ], + + 'permissions' => [ + 'nullable', + 'array', + ], + + 'permissions.*' => [ + 'required', + 'string', + ], + + 'image' => [ + 'nullable', + 'image', + 'mimes:jpg,jpeg,png,webp', + 'max:800', + ], + ]; + } +} diff --git a/app/helpers/helper.php b/app/helpers/helper.php index 24e7625..0044a40 100644 --- a/app/helpers/helper.php +++ b/app/helpers/helper.php @@ -84,7 +84,7 @@ if (!function_exists('getUserFullName')) { } } if (! function_exists('deleteFile')) { - function deleteFile(?File $file): void + function deleteFile(?\App\Models\File $file): void { if (! $file) { return; @@ -107,7 +107,7 @@ if (!function_exists('getFileUrl')) { return null; } - $file = File::find($fileId); + $file = \App\Models\File::find($fileId); if (!$file){ return null; diff --git a/public/assets/js/images.jpg b/public/assets/js/images.jpg new file mode 100644 index 0000000..3ff2975 Binary files /dev/null and b/public/assets/js/images.jpg differ diff --git a/resources/views/admin/admins/index.blade.php b/resources/views/admin/admins/index.blade.php index 2a6893d..b0f56da 100644 --- a/resources/views/admin/admins/index.blade.php +++ b/resources/views/admin/admins/index.blade.php @@ -83,7 +83,6 @@ - @@ -99,13 +98,10 @@ @forelse($admins as $admin) -
تصویر نام نام خانوادگی
- - - @if($admin->file) - {{ $admin->username }} + @if($admin->avatar && $admin->avatar->file) + {{ $admin->username }} diff --git a/resources/views/admin/layouts/header.blade.php b/resources/views/admin/layouts/header.blade.php index 2249612..51fbddb 100644 --- a/resources/views/admin/layouts/header.blade.php +++ b/resources/views/admin/layouts/header.blade.php @@ -67,7 +67,7 @@ - + @@ -93,10 +93,17 @@ data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
- img + @if(auth('admin')->user()->avatar?->file) + img + @else + img + @endif
@@ -106,7 +113,8 @@
  • -

    {{auth('admin')->user()->first_name }} | {{ auth('admin')->user()->last_name }}

    +

    {{auth('admin')->user()->first_name }} + | {{ auth('admin')->user()->last_name }}

    {{auth('admin')->user()->username}}
    diff --git a/resources/views/admin/tours/trash.blade.php b/resources/views/admin/tours/trash.blade.php new file mode 100644 index 0000000..11a26e1 --- /dev/null +++ b/resources/views/admin/tours/trash.blade.php @@ -0,0 +1,230 @@ +@extends('admin.layouts.app') + +@section('breadcrumb') +
    +
    +

    سطل زباله تورها

    + +
    + +
    +
    +
    +@endsection + +@section('content') +
    + +
    +
    +
    +
    +
    + +
    +
    + تورهای حذف‌شده +
    +
    + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + @if(session('success')) + + + + @endif + + @if(session('error')) + + + + @endif + + @if($errors->any()) + + + + @endif + + @forelse($tours as $tour) + + + + + + + + + + + + + + + + + + + + @empty + + + + @endforelse + +
    تصویرعنوان تورمبدأمقصدنوع تورمحدوده تورتاریخ ایجادتاریخ حذفعملیات
    + + {{ session('success') }} + +
    + + {{ session('error') }} + +
    + @foreach($errors->all() as $error) + + {{ $error }} + + @endforeach +
    + + @if($tour->coverImage?->file) + {{ $tour->title }} + @else + {{ $tour->title }} + @endif + + +
    + {{ $tour->title }} +
    + + @if($tour->summary) + + {{ $tour->summary }} + + @endif +
    + {{ $tour->originCity?->name ?? '-' }} + + {{ $tour->city?->name ?? '-' }} + + @if($tour->tour_type) + + {{ $tour->tour_type->label() }} + + @else + - + @endif + + @if($tour->tour_scope) + + {{ $tour->tour_scope->label() }} + + @else + - + @endif + + {{ $tour->created_at?->toJalali()->format('H:i Y/m/d') ?? '-' }} + + {{ $tour->deleted_at?->toJalali()->format('H:i Y/m/d') ?? '-' }} + +
    + +
    + @csrf + + +
    + +
    + @csrf + @method('DELETE') + + +
    + +
    +
    + توری در سطل زباله وجود ندارد. +
    + + +
    +
    +
    +
    + +
    +@endsection diff --git a/routes/admin.php b/routes/admin.php index cd9a4a7..11641c5 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -108,8 +108,10 @@ Route::prefix('admin')->name('admin.')->group(function () { Route::get('create', 'create')->name('create'); Route::post('store', 'store')->name('store'); - Route::prefix('trash')->group(function () { - Route::get('/', 'trash')->name('trash'); + Route::get('cities-by-country/{country}', 'citiesByCountry')->name('citiesByCountry'); + + Route::prefix('trash')->name('trash.')->group(function () { + Route::get('/', 'trash')->name('index'); Route::prefix('{id}')->group(function () { Route::post('restore', 'restore')->name('restore'); diff --git a/storage/framework/views/017607f160165f2423c8cd6b2f4b39b5.php b/storage/framework/views/017607f160165f2423c8cd6b2f4b39b5.php new file mode 100644 index 0000000..441e89f --- /dev/null +++ b/storage/framework/views/017607f160165f2423c8cd6b2f4b39b5.php @@ -0,0 +1,269 @@ +startSection('breadcrumb'); ?> +
    +

    لیست تورها

    + +
    + +
    +
    +stopSection(); ?> + +startSection('content'); ?> +
    + + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    + + + +
    + + +
    + + + +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + addLoop($__currentLoopData); foreach($__currentLoopData as $tour): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> + + + + + + + + + + + + + + + + + + + + + + + popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> + + + + + +
    تصویرعنوان تورمبدأمقصدنوع تورمحدوده تورشیوه برگزاریتعداد حرکت‌هابازه قیمتبازدید صفحهتاریخ ایجاداقدامات
    + + coverImage?->file): ?> + <?php echo e($tour->title); ?> + + <?php echo e($tour->title); ?> + + + +
    + title); ?> + +
    + + summary): ?> + + summary); ?> + + + +
    + originCity?->name ?? '-'); ?> + + + city?->name ?? '-'); ?> + + + tour_scope): ?> + + tour_scope->label()); ?> + + + + - + + + tour_mode): ?> + + tour_mode->label()); ?> + + + + - + + + tour_type): ?> + + tour_type->label()); ?> + + + + - + + + + tour_departures_count); ?> حرکت + + + tour_departures_min_price === $tour->tour_departures_max_price): ?> + tour_departures_min_price)); ?> تومان + + tour_departures_min_price)); ?> + + - + tour_departures_max_price)); ?> + + تومان + + + views_count ?? 0); ?> + + + created_at->toJalali()->format('d F Y - H:i')); ?> + + +
    + + + + +
    + + + + + +
    +
    +
    + هیچ توری یافت نشد. +
    +
    +
    +
    +
    + +
    + links()); ?> + +
    + +
    +stopSection(); ?> + +make('admin.layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> \ No newline at end of file diff --git a/storage/framework/views/383feb70bdf3a39fda9984c8f2553ee3.php b/storage/framework/views/383feb70bdf3a39fda9984c8f2553ee3.php index 8af8fcc..0b32c10 100644 --- a/storage/framework/views/383feb70bdf3a39fda9984c8f2553ee3.php +++ b/storage/framework/views/383feb70bdf3a39fda9984c8f2553ee3.php @@ -55,7 +55,7 @@
    - + سطل زباله diff --git a/storage/framework/views/45a82b70220927a2e2c7979e28ca88dc.php b/storage/framework/views/45a82b70220927a2e2c7979e28ca88dc.php index 71e72ee..188aaba 100644 --- a/storage/framework/views/45a82b70220927a2e2c7979e28ca88dc.php +++ b/storage/framework/views/45a82b70220927a2e2c7979e28ca88dc.php @@ -67,7 +67,7 @@ - + @@ -93,10 +93,17 @@ data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
    - img + user()->avatar?->file): ?> + img + + img +
    @@ -106,7 +113,9 @@
  • -

    user()->first_name); ?> | user()->last_name); ?>

    +

    user()->first_name); ?> + + | user()->last_name); ?>

    user()->username); ?>
    diff --git a/storage/framework/views/673687ccd41818f109e0e910169dff8c.php b/storage/framework/views/673687ccd41818f109e0e910169dff8c.php new file mode 100644 index 0000000..9075472 --- /dev/null +++ b/storage/framework/views/673687ccd41818f109e0e910169dff8c.php @@ -0,0 +1,434 @@ +startSection('breadcrumb'); ?> +
    +
    +

    ویرایش تور

    +
    + +
    +
    +
    +stopSection(); ?> + +startSection('content'); ?> +
    + + + + + + + + + +
    +
    +
    + + + +
    +
    +
    مشخصات اصلی تور
    +
    + +
    +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    +
    + +
    +
    اطلاعات ظرفیت / زمان‌بندی حرکت
    +
    +
    + + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    +
    + +
    +
    گالری تصاویر فعلی
    +
    + images; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $image): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> +
    + <?php echo e($tour->title); ?> + is_default): ?> + اصلی + +
    + popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> + هیچ تصویری ثبت نشده است. + +
    + +
    افزودن تصاویر جدید
    +
    + + +
    + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + +
    +
    +
    +
    +
    + + startPush('scripts'); ?> + + stopPush(); ?> +stopSection(); ?> + +make('admin.layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> \ No newline at end of file diff --git a/storage/framework/views/945546a0bb70eafbd9d633e2e262f122.php b/storage/framework/views/945546a0bb70eafbd9d633e2e262f122.php index dd95c62..08be07d 100644 --- a/storage/framework/views/945546a0bb70eafbd9d633e2e262f122.php +++ b/storage/framework/views/945546a0bb70eafbd9d633e2e262f122.php @@ -80,7 +80,6 @@ - @@ -96,13 +95,10 @@ addLoop($__currentLoopData); foreach($__currentLoopData as $admin): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> -
    تصویر نام نام خانوادگی
    - - - file): ?> - <?php echo e($admin->username); ?> + avatar && $admin->avatar->file): ?> + <?php echo e($admin->username); ?> <?php echo e($admin->username); ?> diff --git a/storage/framework/views/bd58e8cdcbb5c04980c93910eb670950.php b/storage/framework/views/bd58e8cdcbb5c04980c93910eb670950.php new file mode 100644 index 0000000..bf94f77 --- /dev/null +++ b/storage/framework/views/bd58e8cdcbb5c04980c93910eb670950.php @@ -0,0 +1,242 @@ +startSection('breadcrumb'); ?> +
    +
    +

    سطل زباله تورها

    + +
    + +
    +
    +
    +stopSection(); ?> + +startSection('content'); ?> +
    + +
    +
    +
    +
    +
    + +
    +
    + تورهای حذف‌شده +
    +
    + + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + any()): ?> + + + + + + addLoop($__currentLoopData); foreach($__currentLoopData as $tour): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> + + + + + + + + + + + + + + + + + + + + popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> + + + + + +
    تصویرعنوان تورمبدأمقصدنوع تورمحدوده تورتاریخ ایجادتاریخ حذفعملیات
    + + + + +
    + + + + +
    + all(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $error): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> + + + + + popLoop(); $loop = $__env->getLastLoop(); ?> +
    + + coverImage?->file): ?> + <?php echo e($tour->title); ?> + + <?php echo e($tour->title); ?> + + + +
    + title); ?> + +
    + + summary): ?> + + summary); ?> + + + +
    + originCity?->name ?? '-'); ?> + + + city?->name ?? '-'); ?> + + + tour_type): ?> + + tour_type->label()); ?> + + + + - + + + tour_scope): ?> + + tour_scope->label()); ?> + + + + - + + + created_at?->toJalali()->format('H:i Y/m/d') ?? '-'); ?> + + + deleted_at?->toJalali()->format('H:i Y/m/d') ?? '-'); ?> + + +
    + +
    + + + +
    + +
    + + + + +
    + +
    +
    + توری در سطل زباله وجود ندارد. +
    + + +
    +
    +
    +
    + +
    +stopSection(); ?> + +make('admin.layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> \ No newline at end of file diff --git a/storage/framework/views/c0862dfa874f43235690340041aae4b8.php b/storage/framework/views/c0862dfa874f43235690340041aae4b8.php new file mode 100644 index 0000000..b5a18ab --- /dev/null +++ b/storage/framework/views/c0862dfa874f43235690340041aae4b8.php @@ -0,0 +1,414 @@ +startSection('breadcrumb'); ?> +
    +
    +

    ایجاد تور جدید

    +
    + +
    +
    +
    +stopSection(); ?> + +startSection('content'); ?> +
    +
    +
    +
    + +
    +
    +
    + مشخصات اصلی تور +
    +
    + +
    +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    +
    + + +
    +
    اطلاعات اولین ظرفیت / زمان‌بندی حرکت
    +
    +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    + +
    + + + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + +
    +
    + + +
    +
    گالری تصاویر تور
    +
    + + +
    + getBag($__errorArgs[1] ?? 'default'); +if ($__bag->has($__errorArgs[0])) : +if (isset($message)) { $__messageOriginal = $message; } +$message = $__bag->first($__errorArgs[0]); ?> + + + has('images.*')): ?> + get('images.*'); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $messages): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> + addLoop($__currentLoopData); foreach($__currentLoopData as $message): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> + + popLoop(); $loop = $__env->getLastLoop(); ?> + popLoop(); $loop = $__env->getLastLoop(); ?> + +
    + + +
    +
    +
    +
    +
    + startPush('scripts'); ?> + + stopPush(); ?> +stopSection(); ?> + +make('admin.layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> \ No newline at end of file