feat: add admin controllers
This commit is contained in:
@@ -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', 'کاربر با موفقیت حذف شد.');
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user