git commit "complete province and city management with ajax"
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('breadcrumb')
|
||||
|
||||
<span>
|
||||
افزودن شهرستان
|
||||
</span>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid mt-4">
|
||||
|
||||
<div class="row justify-content-center">
|
||||
|
||||
<div class="col-md-7">
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
|
||||
<div class="card-body p-4">
|
||||
|
||||
|
||||
<h4 class="fw-bold mb-4">
|
||||
افزودن شهرستان جدید
|
||||
</h4>
|
||||
|
||||
<form method="POST" action="{{ route('admin.cities.store') }}">
|
||||
|
||||
@csrf
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
|
||||
<label class="form-label">
|
||||
استان
|
||||
</label>
|
||||
|
||||
<select name="province_id"
|
||||
class="form-select form-select-lg">
|
||||
|
||||
<option value="">
|
||||
انتخاب استان
|
||||
</option>
|
||||
|
||||
@foreach($provinces as $province)
|
||||
|
||||
<option value="{{ $province->id }}"
|
||||
{{ old('province_id') == $province->id ? 'selected' : '' }}>
|
||||
|
||||
{{ $province->name }}
|
||||
|
||||
</option>
|
||||
@endforeach
|
||||
|
||||
</select>
|
||||
|
||||
@error('province_id')
|
||||
|
||||
<div class="text-danger mt-2">
|
||||
{{ $message }}
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
<label class="form-label">
|
||||
نام شهرستان
|
||||
</label>
|
||||
|
||||
<input type="text"
|
||||
name="name"
|
||||
class="form-control form-control-lg"
|
||||
placeholder="مثلا مشهد"
|
||||
value="{{ old('name') }}">
|
||||
|
||||
@error('name')
|
||||
|
||||
<div class="text-danger mt-2">
|
||||
{{ $message }}
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
|
||||
<button class="btn btn-success px-4">
|
||||
|
||||
ثبت شهرستان
|
||||
|
||||
</button>
|
||||
|
||||
<a href="{{ route('admin.cities.index') }}"
|
||||
class="btn btn-secondary px-4">
|
||||
|
||||
بازگشت
|
||||
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,117 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('breadcrumb')
|
||||
|
||||
<span>
|
||||
ویرایش شهرستان
|
||||
</span>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
|
||||
<div class="container-fluid mt-4">
|
||||
|
||||
|
||||
<div class="row justify-content-center">
|
||||
|
||||
|
||||
<div class="col-md-7">
|
||||
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
|
||||
|
||||
<div class="card-body p-4">
|
||||
|
||||
<h4 class="fw-bold mb-4">
|
||||
ویرایش شهرستان
|
||||
</h4>
|
||||
<form method="POST"
|
||||
action="{{ route('admin.cities.update',$city->id) }}">
|
||||
|
||||
|
||||
@csrf
|
||||
|
||||
@method('PUT')
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
<label class="form-label">
|
||||
استان
|
||||
</label>
|
||||
|
||||
<select name="province_id"
|
||||
class="form-select form-select-lg">
|
||||
|
||||
@foreach($provinces as $province)
|
||||
|
||||
|
||||
<option value="{{ $province->id }}"
|
||||
@if($city->province_id == $province->id)
|
||||
selected
|
||||
@endif
|
||||
>
|
||||
|
||||
{{ $province->name }}
|
||||
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
@error('province_id')
|
||||
|
||||
<div class="text-danger mt-2">
|
||||
{{ $message }}
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
|
||||
<label class="form-label">
|
||||
|
||||
نام شهرستان
|
||||
|
||||
</label>
|
||||
|
||||
<input type="text"
|
||||
name="name"
|
||||
class="form-control form-control-lg"
|
||||
value="{{ old('name',$city->name) }}">
|
||||
|
||||
@error('name')
|
||||
|
||||
<div class="text-danger mt-2">
|
||||
{{ $message }}
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
|
||||
<button class="btn btn-warning px-4">
|
||||
|
||||
ویرایش
|
||||
|
||||
</button>
|
||||
|
||||
<a href="{{ route('admin.cities.index') }}"
|
||||
class="btn btn-secondary px-4">
|
||||
|
||||
بازگشت
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,131 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
|
||||
@section('content')
|
||||
|
||||
|
||||
<div class="container-fluid mt-4">
|
||||
|
||||
<div class="d-flex justify-content-between mb-4">
|
||||
|
||||
|
||||
<h3 class="fw-bold">
|
||||
مدیریت شهرستانها
|
||||
</h3>
|
||||
<a href="{{ route('admin.cities.create') }}"
|
||||
class="btn btn-primary">
|
||||
|
||||
افزودن شهرستان
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<table class="table table-hover text-center">
|
||||
|
||||
|
||||
<thead class="table-light">
|
||||
|
||||
|
||||
<tr>
|
||||
<th>شناسه</th>
|
||||
|
||||
<th>
|
||||
نام شهرستان
|
||||
</th>
|
||||
|
||||
<th>
|
||||
استان
|
||||
</th>
|
||||
<th>
|
||||
تاریخ ثبت
|
||||
</th>
|
||||
|
||||
<th>
|
||||
عملیات
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
@forelse($cities as $city)
|
||||
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
{{ $city->id }}
|
||||
</td>
|
||||
|
||||
|
||||
<td class="fw-bold">
|
||||
|
||||
{{ $city->name }}
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
{{ $city->province->name ?? '-' }}
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
{{ $city->created_at?->toJalali()->format('Y/m/d') ?? '-' }}
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
<a href="{{ route('admin.cities.edit',$city->id) }}"
|
||||
class="btn btn-warning btn-sm">
|
||||
|
||||
ویرایش
|
||||
|
||||
</a>
|
||||
|
||||
<form action="{{ route('admin.cities.destroy',$city->id) }}"
|
||||
method="POST"
|
||||
class="d-inline">
|
||||
|
||||
@csrf
|
||||
|
||||
@method('DELETE')
|
||||
<button class="btn btn-danger btn-sm">
|
||||
|
||||
حذف
|
||||
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
|
||||
<td colspan="5">
|
||||
|
||||
شهرستانی ثبت نشده است
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
@endforelse
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
{{ $cities->links() }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -118,11 +118,8 @@
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
@forelse($logs as $log)
|
||||
|
||||
<tr>
|
||||
|
||||
<td>
|
||||
{{ $log->admin->first_name ?? '-' }}
|
||||
</td>
|
||||
@@ -130,7 +127,6 @@
|
||||
<td>
|
||||
{{ $log->action }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ $log->model }}
|
||||
</td>
|
||||
@@ -145,7 +141,6 @@
|
||||
<td colspan="4">
|
||||
فعالیتی ثبت نشده است
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
@@ -154,106 +149,71 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm border-0 mt-5">
|
||||
<div class="card shadow-sm border-0 mt-5">
|
||||
|
||||
|
||||
<div class="card-header bg-white fw-bold">
|
||||
|
||||
نمودار بازدید تورها در ۱۰ روز اخیر
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<canvas id="tourViewsChart" height="100"></canvas>
|
||||
|
||||
</div>
|
||||
<div class="card-header bg-white fw-bold">
|
||||
|
||||
نمودار بازدید پروازها در ۱۰ روز اخیر
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<canvas id="flightViewsChart" height="100"></canvas>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script src="{{asset('assets/js/chart.js')}}"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
|
||||
<script>
|
||||
const tourChart = document.getElementById('tourViewsChart');
|
||||
|
||||
new Chart(tourChart, {
|
||||
|
||||
type: 'bar',
|
||||
|
||||
data: {
|
||||
|
||||
labels: @json($tourViews->pluck('date')),
|
||||
|
||||
datasets: [{
|
||||
|
||||
label: 'بازدید تورها',
|
||||
|
||||
data: @json($tourViews->pluck('total')),
|
||||
data: @json($tourViews->pluck('total'))
|
||||
|
||||
}]
|
||||
},
|
||||
|
||||
options: {
|
||||
responsive:true,
|
||||
|
||||
plugins:{
|
||||
|
||||
legend:{
|
||||
|
||||
position:'top'
|
||||
}
|
||||
},
|
||||
scales:{
|
||||
|
||||
y:{
|
||||
beginAtZero:true
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
const flightChart = document.getElementById('flightViewsChart');
|
||||
|
||||
new Chart(flightChart, {
|
||||
|
||||
type: 'bar',
|
||||
|
||||
data: {
|
||||
|
||||
labels: @json($flightViews->pluck('date')),
|
||||
|
||||
datasets: [{
|
||||
|
||||
label: 'بازدید پرواز ها',
|
||||
|
||||
data: @json($flightViews->pluck('total')),
|
||||
label: 'بازدید پروازها',
|
||||
|
||||
data: @json($flightViews->pluck('total'))
|
||||
}]
|
||||
},
|
||||
|
||||
options: {
|
||||
responsive:true,
|
||||
|
||||
plugins:{
|
||||
|
||||
legend:{
|
||||
|
||||
position:'top'
|
||||
}
|
||||
},
|
||||
scales:{
|
||||
|
||||
y:{
|
||||
beginAtZero:true
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
@@ -80,6 +80,23 @@
|
||||
|
||||
</li>
|
||||
|
||||
<li class="nav-item mb-2">
|
||||
|
||||
<a href="{{ route('admin.provinces.index') }}"
|
||||
class="nav-link text-white">
|
||||
|
||||
مدیریت استان ها </a>
|
||||
|
||||
</li>
|
||||
<li class="nav-item mb-2">
|
||||
|
||||
<a href="{{ route('admin.cities.index') }}"
|
||||
class="nav-link text-white">
|
||||
|
||||
مدیریت شهرستان ها </a>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
|
||||
@section('breadcrumb')
|
||||
|
||||
<span>
|
||||
افزودن استان
|
||||
</span>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="container-fluid mt-4">
|
||||
|
||||
|
||||
<div class="row justify-content-center">
|
||||
|
||||
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
<div class="card border-0 shadow-sm">
|
||||
|
||||
|
||||
<div class="card-body p-4">
|
||||
|
||||
|
||||
|
||||
<h4 class="fw-bold mb-4">
|
||||
|
||||
افزودن استان جدید
|
||||
|
||||
</h4>
|
||||
|
||||
<form method="POST"
|
||||
action="{{ route('admin.provinces.store') }}">
|
||||
|
||||
|
||||
@csrf
|
||||
|
||||
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
|
||||
<label class="form-label">
|
||||
|
||||
نام استان
|
||||
|
||||
</label>
|
||||
|
||||
<input type="text"
|
||||
name="name"
|
||||
class="form-control form-control-lg"
|
||||
placeholder="مثلا تهران"
|
||||
value="{{ old('name') }}">
|
||||
|
||||
@error('name')
|
||||
|
||||
<div class="text-danger mt-2">
|
||||
|
||||
{{ $message }}
|
||||
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2">
|
||||
|
||||
|
||||
<button class="btn btn-success px-4">
|
||||
|
||||
ثبت استان
|
||||
|
||||
</button>
|
||||
|
||||
|
||||
|
||||
<a href="{{ route('admin.provinces.index') }}"
|
||||
class="btn btn-secondary px-4">
|
||||
|
||||
بازگشت
|
||||
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -0,0 +1,104 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
|
||||
@section('breadcrumb')
|
||||
|
||||
<span>
|
||||
ویرایش استان
|
||||
</span>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="container-fluid mt-4">
|
||||
|
||||
<div class="row justify-content-center">
|
||||
|
||||
|
||||
<div class="col-lg-6">
|
||||
|
||||
|
||||
<div class="card border-0 shadow-sm">
|
||||
|
||||
|
||||
<div class="card-header bg-white border-0 pt-4">
|
||||
|
||||
|
||||
<h4 class="fw-bold">
|
||||
|
||||
<i class="bi bi-pencil-square"></i>
|
||||
|
||||
ویرایش استان
|
||||
|
||||
</h4>
|
||||
|
||||
|
||||
<p class="text-muted mb-0">
|
||||
|
||||
اطلاعات استان را ویرایش کنید
|
||||
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="card-body p-4">
|
||||
|
||||
<form method="POST"
|
||||
action="{{ route('admin.provinces.update',$province->id) }}">
|
||||
|
||||
@csrf
|
||||
|
||||
@method('PUT')
|
||||
|
||||
<div class="mb-4">
|
||||
|
||||
<label class="form-label fw-bold">
|
||||
|
||||
نام استان
|
||||
|
||||
</label>
|
||||
|
||||
<input type="text"
|
||||
name="name"
|
||||
class="form-control form-control-lg @error('name') is-invalid @enderror"
|
||||
value="{{ old('name',$province->name) }}"
|
||||
placeholder="مثلا تهران">
|
||||
|
||||
@error('name')
|
||||
|
||||
<div class="invalid-feedback">
|
||||
|
||||
{{ $message }}
|
||||
|
||||
</div>
|
||||
|
||||
@enderror
|
||||
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
|
||||
|
||||
<a href="{{ route('admin.provinces.index') }}"
|
||||
class="btn btn-light border px-4">
|
||||
|
||||
بازگشت
|
||||
|
||||
</a>
|
||||
|
||||
<button type="submit"
|
||||
class="btn btn-warning px-5">
|
||||
|
||||
ذخیره تغییرات
|
||||
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,170 @@
|
||||
@extends('admin.layouts.app')
|
||||
|
||||
|
||||
@section('breadcrumb')
|
||||
<span>
|
||||
مدیریت استانها
|
||||
</span>
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="container-fluid mt-4">
|
||||
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
<h3 class="fw-bold mb-1">
|
||||
مدیریت استانها
|
||||
</h3>
|
||||
|
||||
<small class="text-muted">
|
||||
لیست استانهای ثبت شده
|
||||
</small>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a href="{{ route('admin.provinces.create') }}"
|
||||
class="btn btn-primary px-4">
|
||||
|
||||
<i class="bi bi-plus-circle"></i>
|
||||
|
||||
افزودن استان
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card border-0 shadow-sm">
|
||||
|
||||
|
||||
<div class="card-body p-4">
|
||||
|
||||
|
||||
<div class="table-responsive">
|
||||
|
||||
|
||||
<table class="table table-hover align-middle text-center">
|
||||
|
||||
|
||||
<thead class="table-light">
|
||||
|
||||
<tr>
|
||||
|
||||
<th>
|
||||
شناسه
|
||||
</th>
|
||||
|
||||
<th>
|
||||
نام استان
|
||||
</th>
|
||||
|
||||
<th>
|
||||
تاریخ ثبت
|
||||
</th>
|
||||
|
||||
<th>
|
||||
عملیات
|
||||
</th>
|
||||
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
@forelse($provinces as $province)
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<span class="badge bg-secondary">
|
||||
|
||||
{{ $province->id }}
|
||||
|
||||
</span>
|
||||
|
||||
</td>
|
||||
|
||||
<td class="fw-bold">
|
||||
|
||||
{{ $province->name }}
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
{{ $province->created_at?->toJalali()->format('Y/m/d') ?? '-' }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<a href="{{ route('admin.provinces.edit',$province->id) }}"
|
||||
class="btn btn-sm btn-warning">
|
||||
|
||||
ویرایش
|
||||
|
||||
</a>
|
||||
|
||||
<form action="{{ route('admin.provinces.destroy',$province->id) }}"
|
||||
method="POST"
|
||||
class="d-inline">
|
||||
|
||||
|
||||
@csrf
|
||||
|
||||
@method('DELETE')
|
||||
|
||||
<button class="btn btn-sm btn-danger"
|
||||
onclick="return confirm('آیا حذف شود؟')">
|
||||
|
||||
حذف
|
||||
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@empty
|
||||
<tr>
|
||||
|
||||
<td colspan="4"
|
||||
class="text-muted py-4">
|
||||
|
||||
هنوز استانی ثبت نشده است
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
|
||||
{{ $provinces->links() }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
Reference in New Issue
Block a user