diff --git a/app/Http/Controllers/admin/TravelTypeController.php b/app/Http/Controllers/admin/TravelTypeController.php index 6dc3df0..48eae31 100644 --- a/app/Http/Controllers/admin/TravelTypeController.php +++ b/app/Http/Controllers/admin/TravelTypeController.php @@ -3,9 +3,81 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Http\Requests\TravelTypeStoreRequest; +use App\Http\Requests\TravelTypeUpdateRequest; +use App\Models\TravelType; use Illuminate\Http\Request; class TravelTypeController extends Controller { + /** + * لیست + جستجو + صفحه‌بندی انواع سفر + */ + public function index(Request $request) + { + abort_unless(auth('admin')->user()->canManageTravelTypes('view'), 403); + $query = TravelType::query(); + + // جستجو بر اساس عنوان / اسلاگ + if ($request->filled('search')) { + $query->where(function ($q) use ($request) { + $q->where('title', 'like', '%' . $request->search . '%') + ->orWhere('slug', 'like', '%' . $request->search . '%'); + }); + } + + // فیلتر وضعیت (1=فعال، 0=غیرفعال) + if ($request->filled('status')) { + $query->where('status', $request->status); + } + + $travelTypes = $query->latest()->paginate(10)->withQueryString(); + + return view('admin.travel_types.index', compact('travelTypes')); + } + + public function create() + { + abort_unless(auth('admin')->user()->canManageTravelTypes('create'), 403); + + return view('admin.travel_types.create'); + } + + public function store(TravelTypeStoreRequest $request) + { + abort_unless(auth('admin')->user()->canManageTravelTypes('create'), 403); + + TravelType::create($request->validated()); + + return redirect()->route('admin.travelTypes.index') + ->with('success', 'نوع سفر با موفقیت ثبت شد.'); + } + + public function edit(TravelType $travelType) + { + abort_unless(auth('admin')->user()->canManageTravelTypes('edit'), 403); + + return view('admin.travel_types.edit', compact('travelType')); + } + + public function update(TravelTypeUpdateRequest $request, TravelType $travelType) + { + abort_unless(auth('admin')->user()->canManageTravelTypes('edit'), 403); + + $travelType->update($request->validated()); + + return redirect()->route('admin.travelTypes.index') + ->with('success', 'نوع سفر با موفقیت ویرایش شد.'); + } + + public function destroy(TravelType $travelType) + { + abort_unless(auth('admin')->user()->canManageTravelTypes('delete'), 403); + + $travelType->delete(); + + return redirect()->route('admin.travelTypes.index') + ->with('success', 'نوع سفر با موفقیت حذف شد.'); + } }