From 8372e20182aa902be7ce82ef7e927a78d730c83e Mon Sep 17 00:00:00 2001 From: shahrzad011 Date: Mon, 17 Aug 2026 07:43:47 +0330 Subject: [PATCH] feat: add admin controllers --- .../Controllers/admin/AdminController.php | 19 +++ .../Controllers/admin/AirportController.php | 54 ++++++++ app/Http/Controllers/admin/AuthController.php | 45 +++++++ .../Controllers/admin/CommentController.php | 47 +++++++ .../Controllers/admin/DashboardController.php | 42 +++++++ .../Controllers/admin/FavoriteController.php | 42 +++++++ .../Controllers/admin/FlightController.php | 115 ++++++++++++++++++ .../Controllers/admin/PaymentController.php | 47 +++++++ .../Controllers/admin/SettingController.php | 34 ++++++ app/Http/Controllers/admin/TourController.php | 58 +++++++++ .../admin/TravelTypeController.php | 11 ++ app/Http/Controllers/admin/UserController.php | 45 +++++++ 12 files changed, 559 insertions(+) create mode 100644 app/Http/Controllers/admin/AdminController.php create mode 100644 app/Http/Controllers/admin/AirportController.php create mode 100644 app/Http/Controllers/admin/AuthController.php create mode 100644 app/Http/Controllers/admin/CommentController.php create mode 100644 app/Http/Controllers/admin/DashboardController.php create mode 100644 app/Http/Controllers/admin/FavoriteController.php create mode 100644 app/Http/Controllers/admin/FlightController.php create mode 100644 app/Http/Controllers/admin/PaymentController.php create mode 100644 app/Http/Controllers/admin/SettingController.php create mode 100644 app/Http/Controllers/admin/TourController.php create mode 100644 app/Http/Controllers/admin/TravelTypeController.php create mode 100644 app/Http/Controllers/admin/UserController.php diff --git a/app/Http/Controllers/admin/AdminController.php b/app/Http/Controllers/admin/AdminController.php new file mode 100644 index 0000000..d6f6230 --- /dev/null +++ b/app/Http/Controllers/admin/AdminController.php @@ -0,0 +1,19 @@ +latest() + ->paginate(10); + + return view('admin.admins.index', compact('admins')); + } +} diff --git a/app/Http/Controllers/admin/AirportController.php b/app/Http/Controllers/admin/AirportController.php new file mode 100644 index 0000000..094cfb4 --- /dev/null +++ b/app/Http/Controllers/admin/AirportController.php @@ -0,0 +1,54 @@ +paginate(15); + + return view('admin.airports.index', compact('airports')); + } + + public function create() + { + return view('admin.airports.create'); + } + + public function store(AirportStoreRequest $request) + { + Airport::create($request->validated()); + + return redirect() + ->route('admin.airports.index') + ->with('success', 'فرودگاه با موفقیت ثبت شد.'); + } + + public function edit(Airport $airport) + { + return view('admin.airports.edit', compact('airport')); + } + + public function update(AirportStoreRequest $request, Airport $airport) + { + $airport->update($request->validated()); + + return redirect() + ->route('admin.airports.index') + ->with('success', 'فرودگاه با موفقیت بروزرسانی شد.'); + } + + public function destroy(Airport $airport) + { + $airport->delete(); + + return redirect() + ->route('admin.airports.index') + ->with('success', 'فرودگاه با موفقیت حذف شد.'); + } +} diff --git a/app/Http/Controllers/admin/AuthController.php b/app/Http/Controllers/admin/AuthController.php new file mode 100644 index 0000000..df24015 --- /dev/null +++ b/app/Http/Controllers/admin/AuthController.php @@ -0,0 +1,45 @@ +validate([ + 'username' => ['required', 'string'], + 'password' => ['required', 'string'], + ]); + + if (Auth::guard('admin')->attempt($credentials, $request->boolean('remember'))) { + $request->session()->regenerate(); + + return redirect()->route('admin.dashboard.index'); + } + + return back() + ->withErrors([ + 'username' => 'نام کاربری یا رمز عبور اشتباه است.', + ]) + ->withInput($request->only('username')); + } + + public function logout(Request $request) + { + Auth::guard('admin')->logout(); + + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + return redirect()->route('admin.auth.login.index'); + } +} diff --git a/app/Http/Controllers/admin/CommentController.php b/app/Http/Controllers/admin/CommentController.php new file mode 100644 index 0000000..3a8ce24 --- /dev/null +++ b/app/Http/Controllers/admin/CommentController.php @@ -0,0 +1,47 @@ +latest() + ->paginate(15); + + return view('admin.comments.index', compact('comments')); + } + + public function show(Comment $comment) + { + return view('admin.comments.show', compact('comment')); + } + + public function edit(Comment $comment) + { + return view('admin.comments.edit', compact('comment')); + } + + public function update(UpdateCommentRequest $request, Comment $comment) + { + $comment->update($request->validated()); + + return redirect() + ->route('admin.comments.index') + ->with('success', 'نظر با موفقیت به‌روزرسانی شد.'); + } + + public function destroy(Comment $comment) + { + $comment->delete(); + + return redirect() + ->route('admin.comments.index') + ->with('success', 'نظر با موفقیت حذف شد.'); + } +} diff --git a/app/Http/Controllers/admin/DashboardController.php b/app/Http/Controllers/admin/DashboardController.php new file mode 100644 index 0000000..ce6e566 --- /dev/null +++ b/app/Http/Controllers/admin/DashboardController.php @@ -0,0 +1,42 @@ +latest() + ->paginate(15); + + return view('admin.favorites.index', compact('favorites')); + } + + public function show(Favorite $favorite) + { + return view('admin.favorites.show', compact('favorite')); + } + + public function update(FavoriteUpdateRequest $request, Favorite $favorite) + { + $favorite->update($request->safe()->only(['user_id'])); + + return redirect() + ->route('admin.favorites.index') + ->with('success', 'علاقهمندی با موفقیت بهروزرسانی شد.'); + } + + public function destroy(Favorite $favorite) + { + $favorite->delete(); + + return redirect() + ->route('admin.favorites.index') + ->with('success', 'علاقهمندی با موفقیت حذف شد.'); + } +} diff --git a/app/Http/Controllers/admin/FlightController.php b/app/Http/Controllers/admin/FlightController.php new file mode 100644 index 0000000..223cf27 --- /dev/null +++ b/app/Http/Controllers/admin/FlightController.php @@ -0,0 +1,115 @@ +latest() + ->paginate(15); + + return view('admin.payments.index', compact('payments')); + } + + public function show(Payment $payment) + { + return view('admin.payments.show', compact('payment')); + } + + public function edit(Payment $payment) + { + return view('admin.payments.edit', compact('payment')); + } + + public function update(UpdatePaymentRequest $request, Payment $payment) + { + $payment->update($request->safe()->only(['status'])); + + return redirect() + ->route('admin.payments.index') + ->with('success', 'وضعیت پرداخت با موفقیت بهروزرسانی شد.'); + } + + public function destroy(Payment $payment) + { + $payment->delete(); + + return redirect() + ->route('admin.payments.index') + ->with('success', 'پرداخت با موفقیت حذف شد.'); + } +} diff --git a/app/Http/Controllers/admin/SettingController.php b/app/Http/Controllers/admin/SettingController.php new file mode 100644 index 0000000..c866a35 --- /dev/null +++ b/app/Http/Controllers/admin/SettingController.php @@ -0,0 +1,34 @@ +get(); + + return view('admin.settings.index', compact('settings')); + } + + + public function update(SettingUpdateRequest $request): RedirectResponse + { + $data = $request->validated(); + + // چون جدول key-value است، هر ردیف را جداگانه به‌روزرسانی می‌کنیم + foreach ($data as $code => $value) { + Setting::where('code', $code)->update(['value' => $value]); + } + + return back() + ->with('success', 'تنظیمات با موفقیت ذخیره شد.'); + } +} diff --git a/app/Http/Controllers/admin/TourController.php b/app/Http/Controllers/admin/TourController.php new file mode 100644 index 0000000..cbe4042 --- /dev/null +++ b/app/Http/Controllers/admin/TourController.php @@ -0,0 +1,58 @@ +paginate(10); + return view('admin.tours.index', compact($tour)); + } + + public function create() + { + return view('admin.tours.create'); + } + + public function store(TourStoreRequest $request) + { + + Tour::create($request->validated()); + return view('admin.tours.index') + ->with('success', 'تور با موفقیت ایجاد شد.'); + } + public function show(Tour $tour) + { + return view('admin.tours.show', compact('tour')); + } + public function edit(Tour $tour) + { + return view('admin.tours.edit', compact('tour')); + } + public function update(TourStoreRequest $request, Tour $tour) + { + $tour->update($request->validated()); + + return redirect()->route('admin.tours.index') + ->with('success', 'تور با موفقیت به‌روزرسانی شد.'); + } + public function destroy(Tour $tour) + { + $tour->delete(); + + return redirect()->route('admin.tours.index') + ->with('success', 'تور با موفقیت حذف شد.'); + } + + public function removeImage(Tour $tour, $image) + { + // منطق حذف تصویر — بسته به جدول تصاویر + return back()->with('success', 'تصویر حذف شد.'); + } +} diff --git a/app/Http/Controllers/admin/TravelTypeController.php b/app/Http/Controllers/admin/TravelTypeController.php new file mode 100644 index 0000000..6dc3df0 --- /dev/null +++ b/app/Http/Controllers/admin/TravelTypeController.php @@ -0,0 +1,11 @@ +paginate(15); + + return view('admin.users.index', compact('users')); + } + + public function show(User $user) + { + return view('admin.users.show', compact('user')); + } + + public function edit(User $user) + { + return view('admin.users.edit', compact('user')); + } + + public function update(UserStoreRequest $request, User $user) + { + $user->update($request->validated()); + + return redirect() + ->route('admin.users.index') + ->with('success', 'کاربر با موفقیت بروزرسانی شد.'); + } + + public function destroy(User $user) + { + $user->delete(); + + return redirect() + ->route('admin.users.index') + ->with('success', 'کاربر با موفقیت حذف شد.'); + } +}