fix:change wishlist
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Account;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Favorite;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class WishlistController extends Controller
|
||||
@@ -23,4 +24,6 @@ class WishlistController extends Controller
|
||||
|
||||
return view('account.wishlist', compact('favorites'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -22,15 +22,15 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form action="{{ route('account.edit-profile.post') }}"
|
||||
method="POST">
|
||||
<form action="{{ route('account.edit-profile.post') }}"
|
||||
method="POST"
|
||||
enctype="multipart/form-data">
|
||||
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="row">
|
||||
|
||||
{{-- نام --}}
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>نام</label>
|
||||
@@ -50,9 +50,6 @@
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- نام خانوادگی --}}
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>نام خانوادگی</label>
|
||||
@@ -73,8 +70,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- ایمیل --}}
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>ایمیل</label>
|
||||
@@ -95,8 +90,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- موبایل --}}
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>موبایل</label>
|
||||
@@ -117,44 +110,50 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{-- استان و شهر فعلاً همان قبلی --}}
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>استان</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
name="user_province"
|
||||
<select
|
||||
name="province_id"
|
||||
id="province_id"
|
||||
class="form-control"
|
||||
value="{{ old('user_province', $user->user_province) }}"
|
||||
placeholder="استان"
|
||||
>
|
||||
<option value="">استان خود را انتخاب کنید</option>
|
||||
</select>
|
||||
|
||||
@error('province_id')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label>شهر</label>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
name="user_city"
|
||||
<select
|
||||
name="city_id"
|
||||
id="city_id"
|
||||
class="form-control"
|
||||
value="{{ old('user_city', $user->user_city) }}"
|
||||
placeholder="شهر"
|
||||
>
|
||||
<option value="">ابتدا استان را انتخاب کنید</option>
|
||||
</select>
|
||||
|
||||
@error('city_id')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- تغییر رمز --}}
|
||||
<h4 class="user-profile-card-title mt-4">
|
||||
عوض کردن رمز عبور
|
||||
عوض کردن رمز عبور و پروفایل
|
||||
</h4>
|
||||
|
||||
|
||||
@@ -175,7 +174,6 @@
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>رمز عبور جدید</label>
|
||||
|
||||
@@ -185,7 +183,6 @@
|
||||
class="form-control"
|
||||
placeholder="رمز عبور جدید"
|
||||
>
|
||||
|
||||
@error('new_password')
|
||||
<span class="text-danger">
|
||||
{{ $message }}
|
||||
@@ -193,7 +190,6 @@
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>تکرار رمز عبور جدید</label>
|
||||
|
||||
@@ -204,13 +200,27 @@
|
||||
placeholder="تکرار رمز عبور جدید"
|
||||
>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label>عکس پروفایل</label>
|
||||
|
||||
<input
|
||||
type="file"
|
||||
name="image"
|
||||
class="form-control"
|
||||
accept="image/*"
|
||||
>
|
||||
@error('image')
|
||||
<span class="text-danger">
|
||||
{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="theme-btn mt-4">
|
||||
آپدیت مشخصات پروفایل
|
||||
<i class="far fa-user"></i>
|
||||
</button>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
@@ -221,3 +231,90 @@
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@push('scripts')
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
const provinceSelect = document.getElementById('province_id');
|
||||
const citySelect = document.getElementById('city_id');
|
||||
|
||||
const selectedProvinceId = "{{ old('province_id', $user->province_id) }}";
|
||||
const selectedCityId = "{{ old('city_id', $user->city_id) }}";
|
||||
|
||||
fetch('{{ asset('assets/data/iran-cities.json') }}')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
|
||||
const provinces = [];
|
||||
|
||||
data.forEach(item => {
|
||||
|
||||
const exists = provinces.some(
|
||||
province => province.id === item.provinceId
|
||||
);
|
||||
|
||||
if (!exists) {
|
||||
provinces.push({
|
||||
id: item.provinceId,
|
||||
name: item.provinceName
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// نمایش استانها
|
||||
provinces.forEach(province => {
|
||||
|
||||
provinceSelect.innerHTML += `
|
||||
<option value="${province.id}"
|
||||
${String(province.id) === String(selectedProvinceId) ? 'selected' : ''}>
|
||||
${province.name}
|
||||
</option>
|
||||
`;
|
||||
|
||||
});
|
||||
|
||||
// تابع نمایش شهرها
|
||||
function loadCities(provinceId, selectedCity = null) {
|
||||
|
||||
citySelect.innerHTML = `
|
||||
<option value="">شهر خود را انتخاب کنید</option>
|
||||
`;
|
||||
|
||||
if (!provinceId) {
|
||||
return;
|
||||
}
|
||||
|
||||
const cities = data.filter(
|
||||
item => String(item.provinceId) === String(provinceId)
|
||||
);
|
||||
|
||||
cities.forEach(city => {
|
||||
|
||||
citySelect.innerHTML += `
|
||||
<option value="${city.cityId}"
|
||||
${String(city.cityId) === String(selectedCity) ? 'selected' : ''}>
|
||||
${city.cityName}
|
||||
</option>
|
||||
`;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
if (selectedProvinceId) {
|
||||
loadCities(selectedProvinceId, selectedCityId);
|
||||
}
|
||||
|
||||
provinceSelect.addEventListener('change', function () {
|
||||
|
||||
loadCities(this.value);
|
||||
|
||||
});
|
||||
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error loading cities:', error);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
<div class="row mt-30">
|
||||
|
||||
@forelse($favorites as $favorite)
|
||||
|
||||
{{-- ==================== FLIGHT ==================== --}}
|
||||
@if($favorite->flight)
|
||||
|
||||
@php
|
||||
@@ -29,10 +31,17 @@
|
||||
|
||||
<div class="flight-img">
|
||||
|
||||
<img
|
||||
src="{{ asset('assets/img/flight/01.jpg') }}"
|
||||
alt=""
|
||||
>
|
||||
@if($flight->file)
|
||||
<img
|
||||
src="{{ asset('storage/' . $flight->file->path) }}"
|
||||
alt="{{ $flight->title }}"
|
||||
>
|
||||
@else
|
||||
<img
|
||||
src="{{ asset('assets/img/flight/01.jpg') }}"
|
||||
alt="{{ $flight->title }}"
|
||||
>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
@@ -108,6 +117,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{-- ==================== TOUR ==================== --}}
|
||||
@elseif($favorite->tour)
|
||||
|
||||
@php
|
||||
@@ -120,10 +131,17 @@
|
||||
|
||||
<div class="flight-img">
|
||||
|
||||
<img
|
||||
src="{{ asset('assets/img/flight/01.jpg') }}"
|
||||
alt=""
|
||||
>
|
||||
@if($tour->file)
|
||||
<img
|
||||
src="{{ asset('storage/' . $tour->file->path) }}"
|
||||
alt="{{ $tour->title }}"
|
||||
>
|
||||
@else
|
||||
<img
|
||||
src="{{ asset('assets/img/flight/01.jpg') }}"
|
||||
alt="{{ $tour->title }}"
|
||||
>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
@@ -186,14 +204,12 @@
|
||||
از
|
||||
|
||||
<span>
|
||||
|
||||
{{ number_format($tour->price) }}
|
||||
|
||||
تومان
|
||||
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flight-text-btn">
|
||||
|
||||
<a href="{{ route('tours.show', $tour->id) }}">
|
||||
|
||||
Reference in New Issue
Block a user