fix:change blade
This commit is contained in:
@@ -0,0 +1,472 @@
|
|||||||
|
@extends('admin.layouts.app')
|
||||||
|
|
||||||
|
@section('breadcrumb')
|
||||||
|
<div>
|
||||||
|
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||||
|
ایجاد پرواز
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<ol class="breadcrumb mb-0">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="{{ route('admin.flights.index') }}">
|
||||||
|
مدیریت پروازها
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item active" aria-current="page">
|
||||||
|
ایجاد پرواز
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ route('admin.flights.store') }}"
|
||||||
|
method="POST"
|
||||||
|
enctype="multipart/form-data"
|
||||||
|
>
|
||||||
|
@csrf
|
||||||
|
@error('general')
|
||||||
|
<div class="alert alert-danger mb-3">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
|
||||||
|
<div class="card-title">
|
||||||
|
ایجاد پرواز
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-body pt-0">
|
||||||
|
|
||||||
|
<div class="row gy-3">
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Title --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
عنوان پرواز
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="title"
|
||||||
|
placeholder="عنوان پرواز را وارد کنید"
|
||||||
|
value="{{ old('title') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('title')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Airline --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
ایرلاین
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="airline_id"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
یک ایرلاین انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airlines as $airline)
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ $airline->id }}"
|
||||||
|
@selected(old('airline_id') == $airline->id)
|
||||||
|
>
|
||||||
|
{{ $airline->name }}
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('airline_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Departure Airport --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
فرودگاه مبدأ
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="departure_airport_id"
|
||||||
|
>
|
||||||
|
<option value="">
|
||||||
|
فرودگاه مبدأ را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airports as $airport)
|
||||||
|
<option
|
||||||
|
value="{{ $airport->id }}"
|
||||||
|
@selected(old('departure_airport_id') == $airport->id)
|
||||||
|
>
|
||||||
|
{{ $airport->city?->name ?? '-' }}
|
||||||
|
-
|
||||||
|
{{ $airport->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('departure_airport_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
@error('departure_airport_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Arrival Airport --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
فرودگاه مقصد
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="arrival_aiport_id"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
فرودگاه مقصد را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airports as $airport)
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ $airport->id }}"
|
||||||
|
@selected(old('arrival_aiport_id') == $airport->id)
|
||||||
|
>
|
||||||
|
{{ $airport->city?->name }}
|
||||||
|
-
|
||||||
|
{{ $airport->name }}
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('arrival_aiport_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Flight Type --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
نوع پرواز
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="flight_type"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
نوع پرواز را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightType::DEPARTURE->value }}"
|
||||||
|
@selected(
|
||||||
|
old('flight_type') ==
|
||||||
|
\App\Enums\FlightType::DEPARTURE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
یکطرفه
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightType::RETURN->value }}"
|
||||||
|
@selected(
|
||||||
|
old('flight_type') ==
|
||||||
|
\App\Enums\FlightType::RETURN->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
برگشت
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightType::ROUNDTRIP->value }}"
|
||||||
|
@selected(
|
||||||
|
old('flight_type') ==
|
||||||
|
\App\Enums\FlightType::ROUNDTRIP->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
رفت و برگشت
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('flight_type')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Status --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت
|
||||||
|
</label>
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="status"
|
||||||
|
>
|
||||||
|
<option value="">
|
||||||
|
وضعیت را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightStatus::ENABLE->value }}"
|
||||||
|
@selected(old('status') == \App\Enums\FlightStatus::ENABLE->value)
|
||||||
|
>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightStatus::DISABLE->value }}"
|
||||||
|
@selected(old('status') == \App\Enums\FlightStatus::DISABLE->value)
|
||||||
|
>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
@error('status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Departure Time --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
زمان حرکت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="departure_time_jalali"
|
||||||
|
id="departure_time_jalali"
|
||||||
|
data-jdp
|
||||||
|
data-jdp-target-value-input="#departure_time_gregorian"
|
||||||
|
data-jdp-target-value-type="gregorian"
|
||||||
|
autocomplete="off"
|
||||||
|
placeholder="مثلاً 1403/05/29 14:30"
|
||||||
|
value="{{ old('departure_time_jalali') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="departure_time"
|
||||||
|
id="departure_time_gregorian"
|
||||||
|
value="{{ old('departure_time') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('departure_time')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Price --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
قیمت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="price"
|
||||||
|
placeholder="قیمت را وارد کنید"
|
||||||
|
value="{{ old('price') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('price')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Summary --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
توضیحات
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
name="summary"
|
||||||
|
rows="4"
|
||||||
|
placeholder="توضیحات پرواز را وارد کنید"
|
||||||
|
>{{ old('summary') }}</textarea>
|
||||||
|
|
||||||
|
@error('summary')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Flight Image --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تصویر پرواز
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
class="form-control"
|
||||||
|
name="image"
|
||||||
|
id="imageInput"
|
||||||
|
accept=".jpg,.jpeg,.png,.webp"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('image')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="btn btn-primary"
|
||||||
|
>
|
||||||
|
ایجاد پرواز
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="{{ route('admin.flights.index') }}"
|
||||||
|
class="btn btn-light"
|
||||||
|
>
|
||||||
|
انصراف
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@push('js')
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.css"
|
||||||
|
>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.js">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
jalaliDatepicker.startWatch({
|
||||||
|
date: true,
|
||||||
|
time: true,
|
||||||
|
hasSecond: false,
|
||||||
|
targetValueInput: 'attr',
|
||||||
|
targetValueType: 'attr'
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@endpush
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
@@ -0,0 +1,604 @@
|
|||||||
|
@extends('admin.layouts.app')
|
||||||
|
|
||||||
|
@section('breadcrumb')
|
||||||
|
<div>
|
||||||
|
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||||
|
ویرایش پرواز
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<ol class="breadcrumb mb-0">
|
||||||
|
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="{{ route('admin.flights.index') }}">
|
||||||
|
مدیریت پروازها
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item active" aria-current="page">
|
||||||
|
ویرایش پرواز
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ route('admin.flights.update', $flight) }}"
|
||||||
|
method="POST"
|
||||||
|
enctype="multipart/form-data"
|
||||||
|
>
|
||||||
|
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
@error('general')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-title">
|
||||||
|
ویرایش پرواز
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-body pt-0">
|
||||||
|
|
||||||
|
<div class="row gy-3">
|
||||||
|
|
||||||
|
|
||||||
|
{{-- عنوان پرواز --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
عنوان پرواز
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="title"
|
||||||
|
placeholder="عنوان پرواز را وارد کنید"
|
||||||
|
value="{{ old('title', $flight->title) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('title')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- ایرلاین --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
ایرلاین
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="airline_id"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
یک ایرلاین انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airlines as $airline)
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ $airline->id }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'airline_id',
|
||||||
|
$flight->airline_id
|
||||||
|
) == $airline->id
|
||||||
|
)
|
||||||
|
>
|
||||||
|
{{ $airline->name }}
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('airline_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- فرودگاه مبدأ --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
فرودگاه مبدأ
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="departure_airport_id"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
فرودگاه مبدأ را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airports as $airport)
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ $airport->id }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'departure_airport_id',
|
||||||
|
$flight->departure_airport_id
|
||||||
|
) == $airport->id
|
||||||
|
)
|
||||||
|
>
|
||||||
|
{{ $airport->city?->name }}
|
||||||
|
-
|
||||||
|
{{ $airport->name }}
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('departure_airport_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- فرودگاه مقصد --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
فرودگاه مقصد
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="arrival_aiport_id"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
فرودگاه مقصد را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airports as $airport)
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ $airport->id }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'arrival_aiport_id',
|
||||||
|
$flight->arrival_aiport_id
|
||||||
|
) == $airport->id
|
||||||
|
)
|
||||||
|
>
|
||||||
|
{{ $airport->city?->name }}
|
||||||
|
-
|
||||||
|
{{ $airport->name }}
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('arrival_aiport_id')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- نوع پرواز --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
نوع پرواز
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="flight_type"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
نوع پرواز را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightType::DEPARTURE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'flight_type',
|
||||||
|
$flight->flight_type->value
|
||||||
|
) ==
|
||||||
|
\App\Enums\FlightType::DEPARTURE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
یکطرفه
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightType::RETURN->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'flight_type',
|
||||||
|
$flight->flight_type->value
|
||||||
|
) ==
|
||||||
|
\App\Enums\FlightType::RETURN->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
برگشت
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightType::ROUNDTRIP->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'flight_type',
|
||||||
|
$flight->flight_type->value
|
||||||
|
) ==
|
||||||
|
\App\Enums\FlightType::ROUNDTRIP->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
رفت و برگشت
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('flight_type')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- وضعیت --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="status"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
وضعیت را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightStatus::ENABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'status',
|
||||||
|
$flight->status->value
|
||||||
|
) ==
|
||||||
|
\App\Enums\FlightStatus::ENABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\FlightStatus::DISABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'status',
|
||||||
|
$flight->status->value
|
||||||
|
) ==
|
||||||
|
\App\Enums\FlightStatus::DISABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- زمان حرکت --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
زمان حرکت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="departure_time_jalali"
|
||||||
|
id="departure_time_jalali"
|
||||||
|
data-jdp
|
||||||
|
data-jdp-target-value-input="#departure_time_gregorian"
|
||||||
|
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')
|
||||||
|
: ''
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="departure_time"
|
||||||
|
id="departure_time_gregorian"
|
||||||
|
value="{{ old(
|
||||||
|
'departure_time',
|
||||||
|
optional($flight->departure_time)->format('Y-m-d H:i:s')
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('departure_time')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- قیمت --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
قیمت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="price"
|
||||||
|
placeholder="قیمت را وارد کنید"
|
||||||
|
value="{{ old('price', $flight->price) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('price')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- توضیحات --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
توضیحات
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
name="summary"
|
||||||
|
rows="4"
|
||||||
|
placeholder="توضیحات پرواز را وارد کنید"
|
||||||
|
>{{ old('summary', $flight->summary) }}</textarea>
|
||||||
|
|
||||||
|
@error('summary')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تصویر پرواز --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تصویر پرواز
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="d-flex align-items-center gap-3"
|
||||||
|
>
|
||||||
|
|
||||||
|
{{-- تصویر فعلی --}}
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
width:150px;
|
||||||
|
height:150px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
|
||||||
|
<img
|
||||||
|
id="flightImagePreview"
|
||||||
|
src="{{ $flight->file?->path
|
||||||
|
? asset('storage/' . $flight->file->path)
|
||||||
|
: asset('assets/img/flight/01.jpg')
|
||||||
|
}}"
|
||||||
|
alt="{{ $flight->title }}"
|
||||||
|
class="w-100 h-100 rounded"
|
||||||
|
style="object-fit:cover;"
|
||||||
|
>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- انتخاب عکس جدید --}}
|
||||||
|
<label
|
||||||
|
for="imageInput"
|
||||||
|
style="
|
||||||
|
cursor:pointer;
|
||||||
|
width:150px;
|
||||||
|
height:150px;
|
||||||
|
display:flex;
|
||||||
|
justify-content:center;
|
||||||
|
align-items:center;
|
||||||
|
border:2px dashed #ccc;
|
||||||
|
border-radius:8px;
|
||||||
|
text-align:center;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
📷
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<strong>
|
||||||
|
تغییر تصویر
|
||||||
|
</strong>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<small style="color:#999;">
|
||||||
|
JPG / PNG / JPEG / WEBP
|
||||||
|
</small>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
<input
|
||||||
|
id="imageInput"
|
||||||
|
name="image"
|
||||||
|
type="file"
|
||||||
|
accept=".jpg,.jpeg,.png,.webp"
|
||||||
|
style="display:none;"
|
||||||
|
>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@error('image')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="btn btn-primary"
|
||||||
|
>
|
||||||
|
ذخیره تغییرات
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="{{ route('admin.flights.index') }}"
|
||||||
|
class="btn btn-light"
|
||||||
|
>
|
||||||
|
انصراف
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@push('js')
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.css"
|
||||||
|
>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.js">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
jalaliDatepicker.startWatch({
|
||||||
|
date: true,
|
||||||
|
time: true,
|
||||||
|
hasSecond: false,
|
||||||
|
targetValueInput: 'attr',
|
||||||
|
targetValueType: 'attr'
|
||||||
|
});
|
||||||
|
|
||||||
|
document
|
||||||
|
.getElementById('imageInput')
|
||||||
|
.addEventListener('change', function (event) {
|
||||||
|
|
||||||
|
const file = event.target.files[0];
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const preview =
|
||||||
|
document.getElementById('flightImagePreview');
|
||||||
|
|
||||||
|
const reader = new FileReader();
|
||||||
|
|
||||||
|
reader.onload = function (e) {
|
||||||
|
preview.src = e.target.result;
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@endpush
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,542 @@
|
|||||||
|
@extends('admin.layouts.app')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ route('admin.tours.store') }}"
|
||||||
|
method="POST"
|
||||||
|
enctype="multipart/form-data"
|
||||||
|
>
|
||||||
|
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
@error('general')
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-title">
|
||||||
|
ایجاد تور
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<div class="row gy-3">
|
||||||
|
|
||||||
|
{{-- عنوان --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
عنوان تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="title"
|
||||||
|
value="{{ old('title') }}"
|
||||||
|
placeholder="عنوان تور را وارد کنید"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('title')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- مبدأ --}}
|
||||||
|
<div class="col-xl-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
مبدأ
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="origin"
|
||||||
|
value="{{ old('origin') }}"
|
||||||
|
placeholder="مبدأ"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('origin')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- مقصد --}}
|
||||||
|
<div class="col-xl-3">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
مقصد
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="destination"
|
||||||
|
value="{{ old('destination') }}"
|
||||||
|
placeholder="مقصد"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('destination')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- مدت تور --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
مدت تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="duration"
|
||||||
|
value="{{ old('duration') }}"
|
||||||
|
min="1"
|
||||||
|
placeholder="تعداد روز"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('duration')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- قیمت تور --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
قیمت تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="price"
|
||||||
|
value="{{ old('price') }}"
|
||||||
|
min="0"
|
||||||
|
placeholder="قیمت به تومان"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('price')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- وضعیت تور --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="status"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
وضعیت را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourStatus::ENABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old('status') ==
|
||||||
|
\App\Enums\TourStatus::ENABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourStatus::DISABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old('status') ==
|
||||||
|
\App\Enums\TourStatus::DISABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- خلاصه --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
خلاصه تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
name="summary"
|
||||||
|
rows="3"
|
||||||
|
placeholder="خلاصه تور را وارد کنید"
|
||||||
|
>{{ old('summary') }}</textarea>
|
||||||
|
|
||||||
|
@error('summary')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- توضیحات --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
توضیحات تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
name="descriptions"
|
||||||
|
rows="5"
|
||||||
|
placeholder="توضیحات کامل تور را وارد کنید"
|
||||||
|
>{{ old('descriptions') }}</textarea>
|
||||||
|
|
||||||
|
@error('descriptions')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تصویر --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تصویر تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="file"
|
||||||
|
class="form-control"
|
||||||
|
name="image"
|
||||||
|
accept=".jpg,.jpeg,.png,.webp"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('image')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<hr class="mt-4">
|
||||||
|
|
||||||
|
|
||||||
|
{{-- اطلاعات تاریخ --}}
|
||||||
|
<div class="col-12">
|
||||||
|
|
||||||
|
<h5 class="mb-3">
|
||||||
|
اطلاعات تاریخ حرکت
|
||||||
|
</h5>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تاریخ شروع --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تاریخ شروع حرکت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
{{-- تاریخ شروع --}}
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="start_date_jalali"
|
||||||
|
id="start_date_jalali"
|
||||||
|
data-jdp
|
||||||
|
data-jdp-min-date="today"
|
||||||
|
data-jdp-target-value-input="#start_date"
|
||||||
|
data-jdp-target-value-type="gregorian"
|
||||||
|
autocomplete="off"
|
||||||
|
placeholder="مثلاً 1405/06/01"
|
||||||
|
value="{{ old('start_date_jalali') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="start_date"
|
||||||
|
id="start_date"
|
||||||
|
value="{{ old('start_date') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('start_date')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تاریخ پایان --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تاریخ پایان حرکت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
{{-- تاریخ پایان --}}
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="end_date_jalali"
|
||||||
|
id="end_date_jalali"
|
||||||
|
data-jdp
|
||||||
|
data-jdp-min-date="today"
|
||||||
|
data-jdp-target-value-input="#end_date"
|
||||||
|
data-jdp-target-value-type="gregorian"
|
||||||
|
autocomplete="off"
|
||||||
|
placeholder="مثلاً 1405/06/05"
|
||||||
|
value="{{ old('end_date_jalali') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="end_date"
|
||||||
|
id="end_date"
|
||||||
|
value="{{ old('end_date') }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('end_date')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- قیمت تاریخ --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
قیمت این تاریخ
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="tour_date_price"
|
||||||
|
value="{{ old('tour_date_price') }}"
|
||||||
|
min="0"
|
||||||
|
placeholder="قیمت"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('tour_date_price')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- ظرفیت --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
ظرفیت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="capacity"
|
||||||
|
value="{{ old('capacity') }}"
|
||||||
|
min="1"
|
||||||
|
placeholder="ظرفیت"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('capacity')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- وضعیت تاریخ --}}
|
||||||
|
<div class="col-xl-4">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت تاریخ حرکت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="tour_date_status"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
وضعیت را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourDateStatus::ENABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old('tour_date_status') ==
|
||||||
|
\App\Enums\TourDateStatus::ENABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourDateStatus::DISABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old('tour_date_status') ==
|
||||||
|
\App\Enums\TourDateStatus::DISABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('tour_date_status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Footer --}}
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="btn btn-primary"
|
||||||
|
>
|
||||||
|
ایجاد تور
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@push('js')
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.css"
|
||||||
|
>
|
||||||
|
|
||||||
|
<script src="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
jalaliDatepicker.startWatch({
|
||||||
|
date: true,
|
||||||
|
time: true,
|
||||||
|
hasSecond: false,
|
||||||
|
targetValueInput: 'attr',
|
||||||
|
targetValueType: 'attr'
|
||||||
|
});
|
||||||
|
|
||||||
|
// جلوگیری از انتخاب تاریخ پایان قبل از تاریخ شروع
|
||||||
|
document.getElementById('start_date_jalali').addEventListener('change', function () {
|
||||||
|
const endInput = document.getElementById('end_date_jalali');
|
||||||
|
if (this.value) {
|
||||||
|
endInput.setAttribute('data-jdp-min-date', this.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document
|
||||||
|
.getElementById('imageInput')
|
||||||
|
.addEventListener('change', function (event) {
|
||||||
|
|
||||||
|
const file = event.target.files[0];
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const preview = document.getElementById('flightImagePreview');
|
||||||
|
const reader = new FileReader();
|
||||||
|
|
||||||
|
reader.onload = function (e) {
|
||||||
|
preview.src = e.target.result;
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@endpush
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,666 @@
|
|||||||
|
@extends('admin.layouts.app')
|
||||||
|
|
||||||
|
@section('breadcrumb')
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||||
|
ویرایش تور
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
|
||||||
|
<ol class="breadcrumb mb-0">
|
||||||
|
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="{{ route('admin.tours.index') }}">
|
||||||
|
مدیریت تورها
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="breadcrumb-item active" aria-current="page">
|
||||||
|
ویرایش تور
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ route('admin.tours.update', $tour) }}"
|
||||||
|
method="POST"
|
||||||
|
enctype="multipart/form-data"
|
||||||
|
>
|
||||||
|
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
|
||||||
|
@error('general')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
|
||||||
|
@php
|
||||||
|
$tourDate = $tour->tourDates->first();
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
|
||||||
|
<div class="card-header">
|
||||||
|
|
||||||
|
<div class="card-title">
|
||||||
|
ویرایش تور
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-body pt-0">
|
||||||
|
|
||||||
|
<div class="row gy-3">
|
||||||
|
|
||||||
|
|
||||||
|
{{-- عنوان تور --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
عنوان تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="title"
|
||||||
|
placeholder="عنوان تور را وارد کنید"
|
||||||
|
value="{{ old('title', $tour->title) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('title')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- مبدأ --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
مبدأ
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="origin"
|
||||||
|
placeholder="مبدأ را وارد کنید"
|
||||||
|
value="{{ old('origin', $tour->origin) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('origin')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- مقصد --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
مقصد
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="destination"
|
||||||
|
placeholder="مقصد را وارد کنید"
|
||||||
|
value="{{ old('destination', $tour->destination) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('destination')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- مدت تور --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
مدت تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="duration"
|
||||||
|
placeholder="مدت تور را وارد کنید"
|
||||||
|
value="{{ old('duration', $tour->duration) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('duration')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- وضعیت تور --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="status"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
وضعیت تور را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourStatus::ENABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'status',
|
||||||
|
$tour->status
|
||||||
|
) == \App\Enums\TourStatus::ENABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourStatus::DISABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'status',
|
||||||
|
$tour->status
|
||||||
|
) == \App\Enums\TourStatus::DISABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- قیمت تور --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
قیمت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="price"
|
||||||
|
placeholder="قیمت تور را وارد کنید"
|
||||||
|
value="{{ old('price', $tour->price) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('price')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- توضیحات کوتاه --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
خلاصه تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
name="summary"
|
||||||
|
rows="4"
|
||||||
|
placeholder="خلاصه تور را وارد کنید"
|
||||||
|
>{{ old('summary', $tour->summary) }}</textarea>
|
||||||
|
|
||||||
|
@error('summary')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- توضیحات کامل --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
توضیحات تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<textarea
|
||||||
|
class="form-control"
|
||||||
|
name="descriptions"
|
||||||
|
rows="5"
|
||||||
|
placeholder="توضیحات تور را وارد کنید"
|
||||||
|
>{{ old('descriptions', $tour->descriptions) }}</textarea>
|
||||||
|
|
||||||
|
@error('descriptions')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تاریخ شروع --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تاریخ شروع تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="start_date_jalali"
|
||||||
|
id="start_date_jalali"
|
||||||
|
data-jdp
|
||||||
|
data-jdp-target-value-input="#start_date_gregorian"
|
||||||
|
data-jdp-target-value-type="gregorian"
|
||||||
|
autocomplete="off"
|
||||||
|
placeholder="مثلاً 1405/06/01"
|
||||||
|
value="{{ old(
|
||||||
|
'start_date_jalali',
|
||||||
|
$tourDate?->start_date
|
||||||
|
? verta($tourDate->start_date)->format('Y/m/d')
|
||||||
|
: ''
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="start_date"
|
||||||
|
id="start_date_gregorian"
|
||||||
|
value="{{ old(
|
||||||
|
'start_date',
|
||||||
|
$tourDate?->start_date
|
||||||
|
? $tourDate->start_date->format('Y-m-d')
|
||||||
|
: ''
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('start_date')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تاریخ پایان --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تاریخ پایان تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="end_date_jalali"
|
||||||
|
id="end_date_jalali"
|
||||||
|
data-jdp
|
||||||
|
data-jdp-target-value-input="#end_date_gregorian"
|
||||||
|
data-jdp-target-value-type="gregorian"
|
||||||
|
autocomplete="off"
|
||||||
|
placeholder="مثلاً 1405/06/10"
|
||||||
|
value="{{ old(
|
||||||
|
'end_date_jalali',
|
||||||
|
$tourDate?->end_date
|
||||||
|
? verta($tourDate->end_date)->format('Y/m/d')
|
||||||
|
: ''
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="end_date"
|
||||||
|
id="end_date_gregorian"
|
||||||
|
value="{{ old(
|
||||||
|
'end_date',
|
||||||
|
$tourDate?->end_date
|
||||||
|
? $tourDate->end_date->format('Y-m-d')
|
||||||
|
: ''
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('end_date')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- قیمت تاریخ تور --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
قیمت تاریخ تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="tour_date_price"
|
||||||
|
placeholder="قیمت را وارد کنید"
|
||||||
|
value="{{ old(
|
||||||
|
'tour_date_price',
|
||||||
|
$tourDate?->price
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('tour_date_price')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- ظرفیت --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
ظرفیت
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
class="form-control"
|
||||||
|
name="capacity"
|
||||||
|
placeholder="ظرفیت را وارد کنید"
|
||||||
|
value="{{ old(
|
||||||
|
'capacity',
|
||||||
|
$tourDate?->capacity
|
||||||
|
) }}"
|
||||||
|
>
|
||||||
|
|
||||||
|
@error('capacity')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- وضعیت تاریخ تور --}}
|
||||||
|
<div class="col-xl-6">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
وضعیت تاریخ تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select
|
||||||
|
class="form-control"
|
||||||
|
name="tour_date_status"
|
||||||
|
>
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
وضعیت تاریخ تور را انتخاب کنید
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourDateStatus::ENABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'tour_date_status',
|
||||||
|
$tourDate?->status?->value
|
||||||
|
) == \App\Enums\TourDateStatus::ENABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
فعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option
|
||||||
|
value="{{ \App\Enums\TourDateStatus::DISABLE->value }}"
|
||||||
|
@selected(
|
||||||
|
old(
|
||||||
|
'tour_date_status',
|
||||||
|
$tourDate?->status?->value
|
||||||
|
) == \App\Enums\TourDateStatus::DISABLE->value
|
||||||
|
)
|
||||||
|
>
|
||||||
|
غیرفعال
|
||||||
|
</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('tour_date_status')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تصویر تور --}}
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<label class="form-label">
|
||||||
|
تصویر تور
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center gap-3">
|
||||||
|
|
||||||
|
|
||||||
|
{{-- تصویر فعلی --}}
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
width:150px;
|
||||||
|
height:150px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
|
||||||
|
<img
|
||||||
|
id="tourImagePreview"
|
||||||
|
src="{{ $tour->file?->path
|
||||||
|
? asset('storage/' . $tour->file->path)
|
||||||
|
: asset('assets/img/flight/01.jpg')
|
||||||
|
}}"
|
||||||
|
alt="{{ $tour->title }}"
|
||||||
|
class="w-100 h-100 rounded"
|
||||||
|
style="object-fit:cover;"
|
||||||
|
>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- انتخاب عکس جدید --}}
|
||||||
|
<label
|
||||||
|
for="imageInput"
|
||||||
|
style="
|
||||||
|
cursor:pointer;
|
||||||
|
width:150px;
|
||||||
|
height:150px;
|
||||||
|
display:flex;
|
||||||
|
justify-content:center;
|
||||||
|
align-items:center;
|
||||||
|
border:2px dashed #ccc;
|
||||||
|
border-radius:8px;
|
||||||
|
text-align:center;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
📷
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<strong>
|
||||||
|
تغییر تصویر
|
||||||
|
</strong>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<small style="color:#999;">
|
||||||
|
JPG / PNG / JPEG / WEBP
|
||||||
|
</small>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
<input
|
||||||
|
id="imageInput"
|
||||||
|
name="image"
|
||||||
|
type="file"
|
||||||
|
accept=".jpg,.jpeg,.png,.webp"
|
||||||
|
style="display:none;"
|
||||||
|
>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@error('image')
|
||||||
|
<span class="text-danger">
|
||||||
|
{{ $message }}
|
||||||
|
</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
class="btn btn-primary"
|
||||||
|
>
|
||||||
|
ذخیره تغییرات
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href="{{ route('admin.tours.index') }}"
|
||||||
|
class="btn btn-light"
|
||||||
|
>
|
||||||
|
انصراف
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@push('js')
|
||||||
|
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.css"
|
||||||
|
>
|
||||||
|
|
||||||
|
<script
|
||||||
|
src="https://unpkg.com/@majidh1/jalalidatepicker/dist/jalalidatepicker.min.js">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
jalaliDatepicker.startWatch({
|
||||||
|
date: true,
|
||||||
|
time: false,
|
||||||
|
hasSecond: false,
|
||||||
|
targetValueInput: 'attr',
|
||||||
|
targetValueType: 'attr'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// پیشنمایش عکس جدید
|
||||||
|
document
|
||||||
|
.getElementById('imageInput')
|
||||||
|
.addEventListener('change', function (event) {
|
||||||
|
|
||||||
|
const file = event.target.files[0];
|
||||||
|
|
||||||
|
if (!file) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const preview =
|
||||||
|
document.getElementById('tourImagePreview');
|
||||||
|
|
||||||
|
const reader = new FileReader();
|
||||||
|
|
||||||
|
reader.onload = function (e) {
|
||||||
|
preview.src = e.target.result;
|
||||||
|
};
|
||||||
|
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@endpush
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
@extends('admin.layouts.app')
|
||||||
|
@section('breadcrumb')
|
||||||
|
<div>
|
||||||
|
<h1 class="page-title fw-medium fs-18 mb-2">
|
||||||
|
ویرایش کاربر
|
||||||
|
{{getUserFullName($user)}}
|
||||||
|
</h1>
|
||||||
|
<div class="">
|
||||||
|
<nav>
|
||||||
|
<ol class="breadcrumb mb-0">
|
||||||
|
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">مدیریت کاربران</a></li>
|
||||||
|
<li class="breadcrumb-item active" aria-current="page">ویرایش کاربر</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="container-fluid pt-4">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{route('admin.users.update',$user)}}"
|
||||||
|
method="POST"
|
||||||
|
>
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
<div class="card custom-card">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-title">ویرایش کاربر</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row gy-3">
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<label class="form-label">نام</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="first_name"
|
||||||
|
value="{{old('first_name',$user->first_name)}}"
|
||||||
|
placeholder="نام را وارد کنید"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<!-- ERROR -->
|
||||||
|
@error('first_name')
|
||||||
|
<span style="color: red"> {{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<label class="form-label">نام خانوادگی</label>
|
||||||
|
<input type="text" class="form-control"
|
||||||
|
name="last_name"
|
||||||
|
value="{{old('last_name',$user->last_name)}}"
|
||||||
|
placeholder="نام خانوادگی را وارد کنید">
|
||||||
|
</div>
|
||||||
|
@error('last_name')
|
||||||
|
<span style="color: red"> {{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<label class="form-label">ایمیل</label>
|
||||||
|
<input type="email"
|
||||||
|
class="form-control"
|
||||||
|
name="email"
|
||||||
|
value="{{old('email',$user->email)}}"
|
||||||
|
placeholder="ایمیل را وارد کنید">
|
||||||
|
</div>
|
||||||
|
@error('email')
|
||||||
|
<span style="color: red"> {{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<label class="form-label">شماره موبایل</label>
|
||||||
|
<input type="text"
|
||||||
|
class="form-control"
|
||||||
|
name="mobile"
|
||||||
|
value="{{old('mobile',$user->mobile)}}"
|
||||||
|
placeholder="شماره موبایل را وارد کنید">
|
||||||
|
</div>
|
||||||
|
@error('mobile')
|
||||||
|
<div class="text-danger mt-1">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<label class="form-label">رمز عبور جدید (اختیاری)</label>
|
||||||
|
<input type="password"
|
||||||
|
class="form-control"
|
||||||
|
name="password"
|
||||||
|
autocomplete="new-password"
|
||||||
|
placeholder="در صورت عدم تغییر رمز، خالی بگذارید">
|
||||||
|
<small class="text-muted">برای تغییر رمز عبور کاربر، مقدار جدید را وارد کنید؛ در غیر این صورت این فیلد را خالی بگذارید.</small>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@error('password')
|
||||||
|
<span style="color: red"> {{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-footer text-end">
|
||||||
|
<button type="submit" class="btn btn-primary">ذخیره تغییرات</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
Reference in New Issue
Block a user