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 Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
/**
|
||||
* Class Tour
|
||||
*
|
||||
@@ -33,6 +33,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||
*/
|
||||
class Tour extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
/**
|
||||
* @var float|mixed|null
|
||||
*/
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
/**
|
||||
* Class TourDetail
|
||||
*
|
||||
@@ -28,6 +28,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||
*/
|
||||
class TourDetail extends Model
|
||||
{
|
||||
use SoftDeletes;
|
||||
protected $table = 'tour_details';
|
||||
|
||||
protected $casts = [
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<span>تعداد تور</span>
|
||||
</div>
|
||||
<div class="dashboard-widget-icon">
|
||||
<i class="fal fa-loader"></i>
|
||||
<i class="fal fa-suitcase"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,7 +36,7 @@
|
||||
<span >تعداد پرواز ها</span>
|
||||
</div>
|
||||
<div class="dashboard-widget-icon">
|
||||
<i class="fal fa-sack-dollar"></i>
|
||||
<i class="fal fa-plane"></i>
|
||||
</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>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<a href="{{route('admin.tours.index')}}">
|
||||
<i class="far fa-suitcase"></i>
|
||||
مدیریت تورها
|
||||
</a>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label for="user_city">شهر</label>
|
||||
<label>شهر</label>
|
||||
<input type="text" name="user_city" class="form-control"
|
||||
value="{{ old('user_city', $user->user_city) }}" placeholder="شهر">
|
||||
@error('user_city')
|
||||
|
||||
@@ -120,226 +120,6 @@
|
||||
</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
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -23,7 +22,13 @@
|
||||
<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/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>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="preloader">
|
||||
@@ -54,6 +59,7 @@
|
||||
|
||||
|
||||
@includeUnless(isset($withoutHeader), 'layouts.header')
|
||||
|
||||
<main class="main">
|
||||
|
||||
@yield('content')
|
||||
@@ -63,10 +69,21 @@
|
||||
@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/bootstrap.bundle.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/wow.min.js')}}"></script>
|
||||
<script src="{{asset('assets/js/main.js')}}"></script>
|
||||
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -41,18 +41,18 @@
|
||||
</div>
|
||||
</li>
|
||||
<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">
|
||||
<li><a class="dropdown-item" href="{{route('flight.index')}}">لیست پرواز</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<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">
|
||||
<li><a class="dropdown-item" href="{{route('tour.index')}}">لیست تور</a></li>
|
||||
</ul>
|
||||
</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>
|
||||
<div class="header-nav-right">
|
||||
<div class="header-btn">
|
||||
|
||||
+19
-1
@@ -1,11 +1,12 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Admin\TourController;
|
||||
use App\Http\Controllers\Admin\AdminController;
|
||||
use App\Http\Controllers\Admin\Auth\LoginController;
|
||||
use App\Http\Controllers\Admin\DashboardController;
|
||||
use App\Http\Controllers\Admin\UserController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
|
||||
Route::prefix('admin')->name('admin.')->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::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