feat: add tour list and show and edit and delete tours in admin panel
This commit is contained in:
@@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\Tours\TourUpdatePostRequest;
|
||||||
|
use App\Models\Airport;
|
||||||
|
use App\Models\Tour;
|
||||||
|
use Hekmatinasser\Verta\Verta;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class TourController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
|
||||||
|
$tours = Tour::with([
|
||||||
|
'file',
|
||||||
|
'originAirport',
|
||||||
|
'destinationAirport',
|
||||||
|
'tour_details'
|
||||||
|
])
|
||||||
|
->latest()
|
||||||
|
->paginate(10);
|
||||||
|
|
||||||
|
return view('admin.tours.index', compact('tours'));
|
||||||
|
}
|
||||||
|
public function edit(Tour $tour)
|
||||||
|
{
|
||||||
|
$airports = Airport::all();
|
||||||
|
|
||||||
|
$tour->load([
|
||||||
|
'tour_details',
|
||||||
|
'originAirport',
|
||||||
|
'destinationAirport',
|
||||||
|
'file',
|
||||||
|
]);
|
||||||
|
|
||||||
|
return view('admin.tours.edit', compact('tour' , 'airports'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function update(TourUpdatePostRequest $request, Tour $tour)
|
||||||
|
{
|
||||||
|
$tour->update([
|
||||||
|
'title' => $request->title,
|
||||||
|
'tour_type' => $request->tour_type,
|
||||||
|
'summary' => $request->summary,
|
||||||
|
'description' => $request->description,
|
||||||
|
'origin_airports_id' => $request->origin_airports_id,
|
||||||
|
'destination_airports_id' => $request->destination_airports_id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$tourDetail = $tour->tour_details()->first();
|
||||||
|
|
||||||
|
if ($tourDetail) {
|
||||||
|
|
||||||
|
$startDate = Verta::parseFormat('Y/m/d', $request->start_date)->datetime();
|
||||||
|
|
||||||
|
$endDate = Verta::parseFormat('Y/m/d', $request->end_date)->datetime();
|
||||||
|
|
||||||
|
$tourDetail->update([
|
||||||
|
'start_date' => $startDate,
|
||||||
|
'end_date' => $endDate,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('admin.tours.index')
|
||||||
|
->with('success', 'تور با موفقیت بروزرسانی شد.');
|
||||||
|
}
|
||||||
|
public function destroy(Tour $tour)
|
||||||
|
{
|
||||||
|
$tour->tour_details()->delete();
|
||||||
|
|
||||||
|
$tour->delete();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('admin.tours.index')
|
||||||
|
->with('success', 'تور با موفقیت حذف شد.');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\Tours;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class TourUpdatePostRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
|
'title' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
'min:3',
|
||||||
|
'max:150',
|
||||||
|
],
|
||||||
|
|
||||||
|
'file_id' => [
|
||||||
|
'nullable',
|
||||||
|
'exists:files,id',
|
||||||
|
],
|
||||||
|
|
||||||
|
'tour_type' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
'max:255',
|
||||||
|
],
|
||||||
|
|
||||||
|
'summary' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
],
|
||||||
|
|
||||||
|
'description' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
],
|
||||||
|
|
||||||
|
'origin_airports_id' => [
|
||||||
|
'required',
|
||||||
|
'exists:airports,id',
|
||||||
|
],
|
||||||
|
|
||||||
|
'destination_airports_id' => [
|
||||||
|
'required',
|
||||||
|
'exists:airports,id',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -9,7 +9,7 @@ namespace App\Models;
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
/**
|
/**
|
||||||
* Class Tour
|
* Class Tour
|
||||||
*
|
*
|
||||||
@@ -33,6 +33,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
*/
|
*/
|
||||||
class Tour extends Model
|
class Tour extends Model
|
||||||
{
|
{
|
||||||
|
use SoftDeletes;
|
||||||
/**
|
/**
|
||||||
* @var float|mixed|null
|
* @var float|mixed|null
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace App\Models;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
/**
|
/**
|
||||||
* Class TourDetail
|
* Class TourDetail
|
||||||
*
|
*
|
||||||
@@ -28,6 +28,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
*/
|
*/
|
||||||
class TourDetail extends Model
|
class TourDetail extends Model
|
||||||
{
|
{
|
||||||
|
use SoftDeletes;
|
||||||
protected $table = 'tour_details';
|
protected $table = 'tour_details';
|
||||||
|
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
<span>تعداد تور</span>
|
<span>تعداد تور</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboard-widget-icon">
|
<div class="dashboard-widget-icon">
|
||||||
<i class="fal fa-loader"></i>
|
<i class="fal fa-suitcase"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
<span >تعداد پرواز ها</span>
|
<span >تعداد پرواز ها</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="dashboard-widget-icon">
|
<div class="dashboard-widget-icon">
|
||||||
<i class="fal fa-sack-dollar"></i>
|
<i class="fal fa-plane"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,245 @@
|
|||||||
|
@extends('dashboard.layouts.app')
|
||||||
|
|
||||||
|
@section('title','ویرایش تور')
|
||||||
|
|
||||||
|
@section('account-content')
|
||||||
|
|
||||||
|
<div class="user-profile-wrapper">
|
||||||
|
|
||||||
|
@if(session('success'))
|
||||||
|
<div class="col-lg-12 mb-3">
|
||||||
|
<div class="alert alert-success">
|
||||||
|
{{session('success')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="col-lg-12 mb-4">
|
||||||
|
<div class="user-profile-card">
|
||||||
|
|
||||||
|
<h4 class="user-profile-card-title">
|
||||||
|
ویرایش تور
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div class="user-profile-form">
|
||||||
|
|
||||||
|
<form action="{{route('admin.tours.update',$tour->id)}}" method="POST">
|
||||||
|
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>عنوان تور</label>
|
||||||
|
|
||||||
|
<input type="text"
|
||||||
|
name="title"
|
||||||
|
class="form-control"
|
||||||
|
value="{{old('title',$tour->title)}}"
|
||||||
|
placeholder="عنوان تور">
|
||||||
|
|
||||||
|
@error('title')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>نوع تور</label>
|
||||||
|
|
||||||
|
<input type="text"
|
||||||
|
name="tour_type"
|
||||||
|
class="form-control"
|
||||||
|
value="{{old('tour_type',$tour->tour_type)}}"
|
||||||
|
placeholder="نوع تور">
|
||||||
|
|
||||||
|
@error('tour_type')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>مبدأ</label>
|
||||||
|
|
||||||
|
<select name="origin_airports_id" class="form-control">
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
انتخاب مبدأ
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airports as $airport)
|
||||||
|
|
||||||
|
<option value="{{$airport->id}}"
|
||||||
|
{{old('origin_airports_id',$tour->origin_airports_id)==$airport->id?'selected':''}}>
|
||||||
|
|
||||||
|
{{$airport->city}}
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('origin_airports_id')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>مقصد</label>
|
||||||
|
|
||||||
|
<select name="destination_airports_id" class="form-control">
|
||||||
|
|
||||||
|
<option value="">
|
||||||
|
انتخاب مقصد
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@foreach($airports as $airport)
|
||||||
|
|
||||||
|
<option value="{{$airport->id}}"
|
||||||
|
{{old('destination_airports_id',$tour->destination_airports_id)==$airport->id?'selected':''}}>
|
||||||
|
|
||||||
|
{{$airport->city}}
|
||||||
|
|
||||||
|
</option>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
@error('destination_airports_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="start_date"
|
||||||
|
id="start_date"
|
||||||
|
class="form-control"
|
||||||
|
value="{{old('start_date',$tour->tour_details->first()?verta($tour->tour_details->first()->start_date)->format('Y/m/d'):'')}}"
|
||||||
|
placeholder="تاریخ حرکت">
|
||||||
|
|
||||||
|
@error('start_date')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
|
||||||
|
<label>تاریخ برگشت</label>
|
||||||
|
|
||||||
|
<input type="text"
|
||||||
|
name="end_date"
|
||||||
|
id="end_date"
|
||||||
|
class="form-control"
|
||||||
|
value="{{old('end_date',$tour->tour_details->first()?verta($tour->tour_details->first()->end_date)->format('Y/m/d'):'')}}"
|
||||||
|
placeholder="تاریخ برگشت">
|
||||||
|
|
||||||
|
@error('end_date')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
|
||||||
|
<label>خلاصه تور</label>
|
||||||
|
|
||||||
|
<textarea name="summary"
|
||||||
|
class="form-control"
|
||||||
|
rows="4"
|
||||||
|
placeholder="خلاصه تور">{{old('summary',$tour->summary)}}</textarea>
|
||||||
|
|
||||||
|
@error('summary')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group">
|
||||||
|
|
||||||
|
<label>توضیحات تور</label>
|
||||||
|
|
||||||
|
<textarea name="description"
|
||||||
|
class="form-control"
|
||||||
|
rows="6"
|
||||||
|
placeholder="توضیحات تور">{{old('description',$tour->description)}}</textarea>
|
||||||
|
|
||||||
|
@error('description')
|
||||||
|
<span class="text-danger">{{$message}}</span>
|
||||||
|
@enderror
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="theme-btn mt-4">
|
||||||
|
|
||||||
|
بروزرسانی تور
|
||||||
|
|
||||||
|
<i class="far fa-edit"></i>
|
||||||
|
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('scripts')
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
|
||||||
|
$('#start_date').persianDatepicker({
|
||||||
|
format:'YYYY/MM/DD',
|
||||||
|
autoClose:true
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#end_date').persianDatepicker({
|
||||||
|
format:'YYYY/MM/DD',
|
||||||
|
autoClose:true
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
@extends('dashboard.layouts.app')
|
||||||
|
|
||||||
|
@section('title', 'لیست تورها')
|
||||||
|
|
||||||
|
@section('account-content')
|
||||||
|
|
||||||
|
<div class="user-profile-wrapper">
|
||||||
|
|
||||||
|
@if(session('success'))
|
||||||
|
<div class="col-lg-12 mb-3">
|
||||||
|
<div class="alert alert-success">
|
||||||
|
{{ session('success') }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="user-profile-card">
|
||||||
|
|
||||||
|
<h4 class="user-profile-card-title">
|
||||||
|
لیست تورها
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div class="user-profile-form">
|
||||||
|
|
||||||
|
<div class="table-responsive">
|
||||||
|
|
||||||
|
<table class="table">
|
||||||
|
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>عنوان تور</th>
|
||||||
|
<th>مبدأ</th>
|
||||||
|
<th>مقصد</th>
|
||||||
|
<th>تاریخ حرکت</th>
|
||||||
|
<th>تاریخ برگشت</th>
|
||||||
|
<th>نوع تور</th>
|
||||||
|
<th>عملیات</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
@forelse($tours as $tour)
|
||||||
|
|
||||||
|
@php
|
||||||
|
$detail = $tour->tour_details->first();
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ $tours->firstItem() + $loop->index }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ $tour->title }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ $tour->originAirport?->city ?? '-' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ $tour->destinationAirport?->city ?? '-' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ verta($tour->tour_details->first()->start_date)->format('Y/m/d') }}
|
||||||
|
<td>
|
||||||
|
{{ verta($tour->tour_details->first()->end_date)->format('Y/m/d') }} </td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
{{ $tour->tour_type }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<a href="{{ route('tour.show', $tour->id) }}" title="مشاهده"
|
||||||
|
class="btn btn-outline-secondary btn-sm">
|
||||||
|
<i class="far fa-eye"></i>
|
||||||
|
</a>
|
||||||
|
<a href="{{ route('admin.tours.edit', $tour->id) }}" title="ویرایش"
|
||||||
|
class="btn btn-outline-secondary btn-sm">
|
||||||
|
<i class="far fa-pen"></i>
|
||||||
|
</a>
|
||||||
|
<form action="{{ route('admin.tours.destroy', $tour->id) }}" method="POST"
|
||||||
|
style="display: inline-block;">
|
||||||
|
@csrf
|
||||||
|
@method('DELETE')
|
||||||
|
|
||||||
|
<button type="submit" title="حذف"
|
||||||
|
onclick="return confirm('آیا از حذف این تور مطمئن هستید؟')"
|
||||||
|
|
||||||
|
class="btn btn-outline-secondary btn-sm"><i class="far fa-trash-can"></i> </button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
@empty
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan="8" class="text-center">
|
||||||
|
هیچ توری ثبت نشده است.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
@endforelse
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-4">
|
||||||
|
{{ $tours->links() }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endsection
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#">
|
<a href="{{route('admin.tours.index')}}">
|
||||||
<i class="far fa-suitcase"></i>
|
<i class="far fa-suitcase"></i>
|
||||||
مدیریت تورها
|
مدیریت تورها
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="user_city">شهر</label>
|
<label>شهر</label>
|
||||||
<input type="text" name="user_city" class="form-control"
|
<input type="text" name="user_city" class="form-control"
|
||||||
value="{{ old('user_city', $user->user_city) }}" placeholder="شهر">
|
value="{{ old('user_city', $user->user_city) }}" placeholder="شهر">
|
||||||
@error('user_city')
|
@error('user_city')
|
||||||
|
|||||||
@@ -120,226 +120,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="testimonial-area bg py-120">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row align-items-center">
|
|
||||||
<div class="col-lg-5 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s">
|
|
||||||
<div class="site-heading">
|
|
||||||
<span class="site-title-tagline">توصیه ها و گواهینامه</span>
|
|
||||||
<h2 class="site-title">لورم ایپسوم متن ساختگی با تولید سادگی است.</h2>
|
|
||||||
<p>انواع مختلفی از عبارات بر خلاف باور عمومی موجود است اما
|
|
||||||
اکثریت با طنز تزریق شده یا کلمات تصادفی به نوعی دچار تغییر شده اند
|
|
||||||
که حتی کمی به نظر نمی رسد از یک گذرگاه باورنکردنی استفاده کنید.</p>
|
|
||||||
<a href="#" class="theme-btn mt-30">کاوش کردن بیشتر<i class="far fa-arrow-left"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-7">
|
|
||||||
<div class="testimonial-slider owl-carousel owl-theme wow fadeInUp" data-wow-duration="1s"
|
|
||||||
data-wow-delay=".25s" dir="ltr">
|
|
||||||
<div class="testimonial-single" dir="rtl">
|
|
||||||
<div class="testimonial-content" dir="rtl">
|
|
||||||
<div class="testimonial-author-img" dir="rtl">
|
|
||||||
<img src="assets/img/testimonial/01.jpg" alt>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-author-info" dir="rtl">
|
|
||||||
<h4>سیلویا اچ گرین</h4>
|
|
||||||
<p>مشتریان</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-quote" dir="rtl">
|
|
||||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
|
|
||||||
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
|
|
||||||
<div class="testimonial-quote-icon" dir="rtl">
|
|
||||||
<img src="assets/img/icon/quote.svg" alt>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-rate" dir="rtl">
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-single" dir="rtl">
|
|
||||||
<div class="testimonial-content" dir="rtl">
|
|
||||||
<div class="testimonial-author-img" dir="rtl">
|
|
||||||
<img src="assets/img/testimonial/02.jpg" alt>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-author-info" dir="rtl">
|
|
||||||
<h4>گوردو نواک</h4>
|
|
||||||
<p>مشتریان</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-quote" dir="rtl">
|
|
||||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
|
|
||||||
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
|
|
||||||
<div class="testimonial-quote-icon" dir="rtl">
|
|
||||||
<img src="assets/img/icon/quote.svg" alt>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-rate" dir="rtl">
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-single" dir="rtl">
|
|
||||||
<div class="testimonial-content" dir="rtl">
|
|
||||||
<div class="testimonial-author-img" dir="rtl">
|
|
||||||
<img src="assets/img/testimonial/03.jpg" alt>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-author-info" dir="rtl">
|
|
||||||
<h4>مایکل جکسون</h4>
|
|
||||||
<p>مشتریان</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-quote" dir="rtl">
|
|
||||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
|
|
||||||
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
|
|
||||||
<div class="testimonial-quote-icon" dir="rtl">
|
|
||||||
<img src="assets/img/icon/quote.svg" alt>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-rate" dir="rtl">
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-single" dir="rtl">
|
|
||||||
<div class="testimonial-content" dir="rtl">
|
|
||||||
<div class="testimonial-author-img" dir="rtl">
|
|
||||||
<img src="assets/img/testimonial/04.jpg" alt>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-author-info" dir="rtl">
|
|
||||||
<h4>برایان جیمز</h4>
|
|
||||||
<p>مشتریان</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-quote" dir="rtl">
|
|
||||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
|
|
||||||
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
|
|
||||||
<div class="testimonial-quote-icon" dir="rtl">
|
|
||||||
<img src="assets/img/icon/quote.svg" alt>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-rate" dir="rtl">
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-single" dir="rtl">
|
|
||||||
<div class="testimonial-content" dir="rtl">
|
|
||||||
<div class="testimonial-author-img" dir="rtl">
|
|
||||||
<img src="assets/img/testimonial/05.jpg" alt>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-author-info" dir="rtl">
|
|
||||||
<h4>بندیکت کمبریچ</h4>
|
|
||||||
<p>مشتریان</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-quote" dir="rtl">
|
|
||||||
<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان
|
|
||||||
گرافیک است. چاپگرها و متون بلکه روزنامه تکنولوژی مورد نیاز است.</p>
|
|
||||||
<div class="testimonial-quote-icon" dir="rtl">
|
|
||||||
<img src="assets/img/icon/quote.svg" alt>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="testimonial-rate" dir="rtl">
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
<i class="fas fa-star"></i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="blog-area py-120">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6 mx-auto wow fadeInDown" data-wow-duration="1s" data-wow-delay=".25s">
|
|
||||||
<div class="site-heading text-center">
|
|
||||||
<span class="site-title-tagline">وبلاگ ما</span>
|
|
||||||
<h2 class="site-title">آخرین وبلاگ و اخبار ما</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6 col-lg-4">
|
|
||||||
<div class="blog-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".25s">
|
|
||||||
<div class="blog-item-img">
|
|
||||||
<img src="assets/img/blog/01.jpg" alt="Thumb">
|
|
||||||
</div>
|
|
||||||
<div class="blog-item-info">
|
|
||||||
<div class="blog-item-meta">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#"><i class="far fa-user-circle"></i> نوشته آلیشیا دیویس</a></li>
|
|
||||||
<li><a href="#"><i class="far fa-calendar-alt"></i> 30 بهمن،1402 </a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<h4 class="blog-title">
|
|
||||||
<a href="#">برای اکثریت در برخی از تزریقات، تغییرات زیادی وجود دارد
|
|
||||||
شوخ طبعی</a>
|
|
||||||
</h4>
|
|
||||||
<a class="theme-btn mt-3" href="#"> ادامه مطلب <i class="far fa-arrow-left"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 col-lg-4">
|
|
||||||
<div class="blog-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".50s">
|
|
||||||
<div class="blog-item-img">
|
|
||||||
<img src="assets/img/blog/02.jpg" alt="Thumb">
|
|
||||||
</div>
|
|
||||||
<div class="blog-item-info">
|
|
||||||
<div class="blog-item-meta">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#"><i class="far fa-user-circle"></i> نوشته آلیشیا دیویس</a></li>
|
|
||||||
<li><a href="#"><i class="far fa-calendar-alt"></i> 30 بهمن،1402 </a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<h4 class="blog-title">
|
|
||||||
<a href="#">برای اکثریت در برخی از تزریقات، تغییرات زیادی وجود دارد
|
|
||||||
شوخ طبعی</a>
|
|
||||||
</h4>
|
|
||||||
<a class="theme-btn mt-3" href="#"> ادامه مطلب <i class="far fa-arrow-left"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 col-lg-4">
|
|
||||||
<div class="blog-item wow fadeInUp" data-wow-duration="1s" data-wow-delay=".75s">
|
|
||||||
<div class="blog-item-img">
|
|
||||||
<img src="assets/img/blog/03.jpg" alt="Thumb">
|
|
||||||
</div>
|
|
||||||
<div class="blog-item-info">
|
|
||||||
<div class="blog-item-meta">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#"><i class="far fa-user-circle"></i> نوشته آلیشیا دیویس</a></li>
|
|
||||||
<li><a href="#"><i class="far fa-calendar-alt"></i> 30 بهمن،1402 </a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<h4 class="blog-title">
|
|
||||||
<a href="#">برای اکثریت در برخی از تزریقات، تغییرات زیادی وجود دارد
|
|
||||||
شوخ طبعی</a>
|
|
||||||
</h4>
|
|
||||||
<a class="theme-btn mt-3" href="#"> ادامه مطلب <i class="far fa-arrow-left"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
@@ -23,7 +22,13 @@
|
|||||||
<link rel="stylesheet" href="{{asset('assets/css/jquery-ui.min.css')}}">
|
<link rel="stylesheet" href="{{asset('assets/css/jquery-ui.min.css')}}">
|
||||||
<link rel="stylesheet" href="{{asset('assets/css/jquery.timepicker.min.css')}}">
|
<link rel="stylesheet" href="{{asset('assets/css/jquery.timepicker.min.css')}}">
|
||||||
<link rel="stylesheet" href="{{asset('assets/css/style.css')}}">
|
<link rel="stylesheet" href="{{asset('assets/css/style.css')}}">
|
||||||
|
|
||||||
|
{{-- Persian Datepicker --}}
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://cdn.jsdelivr.net/npm/persian-datepicker@1.2.0/dist/css/persian-datepicker.min.css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="preloader">
|
<div class="preloader">
|
||||||
@@ -54,6 +59,7 @@
|
|||||||
|
|
||||||
|
|
||||||
@includeUnless(isset($withoutHeader), 'layouts.header')
|
@includeUnless(isset($withoutHeader), 'layouts.header')
|
||||||
|
|
||||||
<main class="main">
|
<main class="main">
|
||||||
|
|
||||||
@yield('content')
|
@yield('content')
|
||||||
@@ -63,10 +69,21 @@
|
|||||||
@includeUnless(isset($withoutFooter), 'layouts.footer')
|
@includeUnless(isset($withoutFooter), 'layouts.footer')
|
||||||
|
|
||||||
|
|
||||||
<a href="#" id="scroll-top"><i class="far fa-angle-up"></i></a>
|
<a href="#" id="scroll-top">
|
||||||
|
<i class="far fa-angle-up"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- jQuery فقط یک بار --}}
|
||||||
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||||
|
|
||||||
|
{{-- Persian Date --}}
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/persian-date@1.1.0/dist/persian-date.min.js"></script>
|
||||||
|
|
||||||
|
{{-- Persian Datepicker --}}
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/persian-datepicker@1.2.0/dist/js/persian-datepicker.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script src="{{asset('assets/js/jquery-3.6.0.min.js')}}"></script>
|
|
||||||
<script src="{{asset('assets/js/modernizr.min.js')}}"></script>
|
<script src="{{asset('assets/js/modernizr.min.js')}}"></script>
|
||||||
<script src="{{asset('assets/js/bootstrap.bundle.min.js')}}"></script>
|
<script src="{{asset('assets/js/bootstrap.bundle.min.js')}}"></script>
|
||||||
<script src="{{asset('assets/js/imagesloaded.pkgd.min.js')}}"></script>
|
<script src="{{asset('assets/js/imagesloaded.pkgd.min.js')}}"></script>
|
||||||
@@ -82,6 +99,9 @@
|
|||||||
<script src="{{asset('assets/js/jquery.timepicker.min.js')}}"></script>
|
<script src="{{asset('assets/js/jquery.timepicker.min.js')}}"></script>
|
||||||
<script src="{{asset('assets/js/wow.min.js')}}"></script>
|
<script src="{{asset('assets/js/wow.min.js')}}"></script>
|
||||||
<script src="{{asset('assets/js/main.js')}}"></script>
|
<script src="{{asset('assets/js/main.js')}}"></script>
|
||||||
|
|
||||||
|
|
||||||
|
@yield('scripts')
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -41,18 +41,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">پرواز ها</a>
|
<a class="nav-link dropdown-toggle" href="{{route('flight.index')}}" data-bs-toggle="dropdown">پرواز ها</a>
|
||||||
<ul class="dropdown-menu fade-down">
|
<ul class="dropdown-menu fade-down">
|
||||||
<li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a></li>
|
<li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown">
|
<li class="nav-item dropdown">
|
||||||
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">تور ها</a>
|
<a class="nav-link dropdown-toggle" href="{{route('tour.index')}}" data-bs-toggle="dropdown">تور ها</a>
|
||||||
<ul class="dropdown-menu fade-down">
|
<ul class="dropdown-menu fade-down">
|
||||||
<li><a class="dropdown-item" href="{{route('tour.index')}}">لیست تور</a></li>
|
<li><a class="dropdown-item" href="{{route('tour.index')}}">لیست تور</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item"><a class="nav-link" href="contact.html">تماس باما</a></li>
|
<li class="nav-item"><a class="nav-link" href="{{route('about-us')}}">درباره ما</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="header-nav-right">
|
<div class="header-nav-right">
|
||||||
<div class="header-btn">
|
<div class="header-btn">
|
||||||
|
|||||||
+19
-1
@@ -1,11 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
use App\Http\Controllers\Admin\TourController;
|
||||||
use App\Http\Controllers\Admin\AdminController;
|
use App\Http\Controllers\Admin\AdminController;
|
||||||
use App\Http\Controllers\Admin\Auth\LoginController;
|
use App\Http\Controllers\Admin\Auth\LoginController;
|
||||||
use App\Http\Controllers\Admin\DashboardController;
|
use App\Http\Controllers\Admin\DashboardController;
|
||||||
use App\Http\Controllers\Admin\UserController;
|
use App\Http\Controllers\Admin\UserController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
|
||||||
Route::prefix('admin')->name('admin.')->group(function () {
|
Route::prefix('admin')->name('admin.')->group(function () {
|
||||||
|
|
||||||
Route::controller(LoginController::class)->middleware('admin.guest')->group(function () {
|
Route::controller(LoginController::class)->middleware('admin.guest')->group(function () {
|
||||||
@@ -30,6 +31,23 @@ Route::prefix('admin')->name('admin.')->group(function () {
|
|||||||
Route::put('{admin}', 'update')->name('update');
|
Route::put('{admin}', 'update')->name('update');
|
||||||
Route::delete('{admin}', 'destroy')->name('destroy');
|
Route::delete('{admin}', 'destroy')->name('destroy');
|
||||||
});
|
});
|
||||||
|
Route::prefix('tours')->controller(TourController::class)->name('tours.')->group(function () {
|
||||||
|
|
||||||
|
Route::get('/', 'index')->name('index');
|
||||||
|
|
||||||
|
Route::get('create', 'create')->name('create');
|
||||||
|
|
||||||
|
Route::post('/', 'store')->name('store');
|
||||||
|
|
||||||
|
Route::get('{tour}', 'show')->name('show');
|
||||||
|
|
||||||
|
Route::get('{tour}/edit', 'edit')->name('edit');
|
||||||
|
|
||||||
|
Route::put('{tour}', 'update')->name('update');
|
||||||
|
|
||||||
|
Route::delete('{tour}', 'destroy')->name('destroy');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user