feat: add admin controllers

This commit is contained in:
2026-08-17 07:43:47 +03:30
parent f50031393e
commit 8372e20182
12 changed files with 559 additions and 0 deletions
@@ -0,0 +1,19 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Admin;
class AdminController extends Controller
{
public function index()
{
$admins = Admin::query()
->latest()
->paginate(10);
return view('admin.admins.index', compact('admins'));
}
}
@@ -0,0 +1,54 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\AirportStoreRequest;
use App\Models\Airport;
class AirportController extends Controller
{
public function index()
{
$airports = Airport::latest()->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', 'فرودگاه با موفقیت حذف شد.');
}
}
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
public function login()
{
return view('admin.auth.login');
}
public function loginPost(Request $request)
{
$credentials = $request->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');
}
}
@@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\UpdateCommentRequest;
use App\Models\Comment;
class CommentController extends Controller
{
public function index()
{
$comments = Comment::with(['user', 'commentable'])
->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', 'نظر با موفقیت حذف شد.');
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Airport;
use App\Models\Comment;
use App\Models\Favorite;
use App\Models\Flight;
use App\Models\Payment;
use App\Models\Tour;
use App\Models\User;
class DashboardController extends Controller
{
public function index()
{
$usersCount = User::count();
$toursCount = Tour::count();
$flightsCount = Flight::count();
$airportsCount = Airport::count();
$commentsCount = Comment::count();
$favoritesCount = Favorite::count();
$paymentsCount = Payment::count();
return view('admin.dashboard', compact(
'usersCount',
'toursCount',
'flightsCount',
'airportsCount',
'commentsCount',
'favoritesCount',
'paymentsCount'
));
}
}
@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\FavoriteUpdateRequest;
use App\Models\Favorite;
class FavoriteController extends Controller
{
public function index()
{
$favorites = Favorite::with(['user', 'favoritable'])
->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', 'علاقهمندی با موفقیت حذف شد.');
}
}
@@ -0,0 +1,115 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class FlightController extends Controller
{
/**
* نمایش لیست پروازها
*/
public function index()
{
return 'Flights index';
}
/**
* نمایش فرم ایجاد پرواز
*/
public function create()
{
return 'Flights create';
}
/**
* ذخیره پرواز جدید
*/
public function store(Request $request)
{
//
}
/**
* نمایش جزئیات یک پرواز
*/
public function show($flight)
{
return 'Flights show';
}
/**
* نمایش فرم ویرایش پرواز
*/
public function edit($flight)
{
return 'Flights edit';
}
/**
* بروزرسانی پرواز
*/
public function update(Request $request, $flight)
{
//
}
/**
* حذف پرواز
*/
public function destroy($flight)
{
//
}
}
//
//namespace App\Http\Controllers\Admin;
//
//use App\Http\Controllers\Controller;
//use Illuminate\Http\Request;
//
//class FlightController extends Controller
//{
// public function index()
// {
// return 'Flights index';
// }
//
// public function create()
// {
// return 'Flights create';
// }
//
// public function store()
// {
// //
// }
//
// public function show($flight)
// {
// return 'Flights show';
// }
//
// public function edit($flight)
// {
// return 'Flights edit';
// }
//
// public function update($flight)
// {
// //
// }
//
// public function destroy($flight)
// {
// //
// }
//}
@@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\UpdatePaymentRequest;
use App\Models\Payment;
class PaymentController extends Controller
{
public function index()
{
$payments = Payment::with(['user'])
->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', 'پرداخت با موفقیت حذف شد.');
}
}
@@ -0,0 +1,34 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\SettingUpdateRequest;
use App\Models\Setting;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
class SettingController extends Controller
{
public function index(): View
{
$settings = Setting::orderBy('id')->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', 'تنظیمات با موفقیت ذخیره شد.');
}
}
@@ -0,0 +1,58 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\TourStoreRequest;
use App\Models\Tour;
use Illuminate\Http\Request;
class TourController extends Controller
{
public function index()
{
$tour = Tour::latest()->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', 'تصویر حذف شد.');
}
}
@@ -0,0 +1,11 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class TravelTypeController extends Controller
{
}
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\UserStoreRequest;
use App\Models\User;
class UserController extends Controller
{
public function index()
{
$users = User::latest()->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', 'کاربر با موفقیت حذف شد.');
}
}