diff --git a/app/Http/Controllers/Admin/TourController.php b/app/Http/Controllers/Admin/TourController.php new file mode 100644 index 0000000..8d70d64 --- /dev/null +++ b/app/Http/Controllers/Admin/TourController.php @@ -0,0 +1,84 @@ +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', 'تور با موفقیت حذف شد.'); + } +} diff --git a/app/Http/Requests/Tours/TourUpdatePostRequest.php b/app/Http/Requests/Tours/TourUpdatePostRequest.php new file mode 100644 index 0000000..c26dd4d --- /dev/null +++ b/app/Http/Requests/Tours/TourUpdatePostRequest.php @@ -0,0 +1,66 @@ +|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', + ], + ]; + } +} diff --git a/app/Models/Tour.php b/app/Models/Tour.php index 4355e98..98b9c2c 100644 --- a/app/Models/Tour.php +++ b/app/Models/Tour.php @@ -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 */ diff --git a/app/Models/TourDetail.php b/app/Models/TourDetail.php index decad16..0dfb435 100644 --- a/app/Models/TourDetail.php +++ b/app/Models/TourDetail.php @@ -8,10 +8,10 @@ namespace App\Models; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; - +use Illuminate\Database\Eloquent\SoftDeletes; /** * Class TourDetail - * + * * @property int $id * @property int $tour_id * @property Carbon $start_date @@ -21,13 +21,14 @@ use Illuminate\Database\Eloquent\Model; * @property int $status * @property Carbon $created_at * @property Carbon $updated_at - * + * * @property Tour $tour * * @package App\Models */ class TourDetail extends Model { + use SoftDeletes; protected $table = 'tour_details'; protected $casts = [ diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index bfa42be..d0e2c6f 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -25,7 +25,7 @@ تعداد تور
@@ -33,10 +33,10 @@ diff --git a/resources/views/admin/tours/edit.blade.php b/resources/views/admin/tours/edit.blade.php new file mode 100644 index 0000000..91fd3df --- /dev/null +++ b/resources/views/admin/tours/edit.blade.php @@ -0,0 +1,245 @@ +@extends('dashboard.layouts.app') + +@section('title','ویرایش تور') + +@section('account-content') + + + +@endsection + + +@section('scripts') + + + +@endsection diff --git a/resources/views/admin/tours/index.blade.php b/resources/views/admin/tours/index.blade.php new file mode 100644 index 0000000..81cc825 --- /dev/null +++ b/resources/views/admin/tours/index.blade.php @@ -0,0 +1,132 @@ +@extends('dashboard.layouts.app') + +@section('title', 'لیست تورها') + +@section('account-content') + + + +@endsection diff --git a/resources/views/dashboard/layouts/sidebar.blade.php b/resources/views/dashboard/layouts/sidebar.blade.php index 3a61b49..603b71f 100644 --- a/resources/views/dashboard/layouts/sidebar.blade.php +++ b/resources/views/dashboard/layouts/sidebar.blade.php @@ -59,7 +59,7 @@انواع مختلفی از عبارات بر خلاف باور عمومی موجود است اما - اکثریت با طنز تزریق شده یا کلمات تصادفی به نوعی دچار تغییر شده اند - که حتی کمی به نظر نمی رسد از یک گذرگاه باورنکردنی استفاده کنید.
- کاوش کردن بیشتر -
-
-
-