diff --git a/app/Http/Controllers/Admin/QuizCategoryController.php b/app/Http/Controllers/Admin/QuizCategoryController.php
new file mode 100644
index 0000000..61c4b52
--- /dev/null
+++ b/app/Http/Controllers/Admin/QuizCategoryController.php
@@ -0,0 +1,47 @@
+latest()->get();
+ return view('admin.quiz-categories.index', compact('categories'));
+ }
+
+ public function store(Request $request)
+ {
+ $request->validate([
+ 'title' => 'required|string|max:255',
+ 'description' => 'nullable|string',
+ ]);
+
+ QuizCategory::create([
+ 'title' => $request->title,
+ // Automatically generate a unique slug for URLs
+ 'slug' => Str::slug($request->title) . '-' . time(),
+ 'description' => $request->description,
+ 'is_active' => $request->has('is_active'),
+ ]);
+
+ return back()->with('success', 'دستهبندی با موفقیت ایجاد شد.');
+ }
+
+ public function destroy(QuizCategory $quiz_category)
+ {
+ // Check if the category has quizzes before deleting
+ if ($quiz_category->quizzes()->count() > 0) {
+ return back()->with('error', 'این دستهبندی شامل آزمون است و نمیتواند حذف شود. ابتدا آزمونها را حذف کنید.');
+ }
+
+ $quiz_category->delete();
+ return back()->with('success', 'دستهبندی با موفقیت حذف شد.');
+ }
+}
diff --git a/resources/views/admin/partial/menu.blade.php b/resources/views/admin/partial/menu.blade.php
index eeb3bfe..e528445 100644
--- a/resources/views/admin/partial/menu.blade.php
+++ b/resources/views/admin/partial/menu.blade.php
@@ -36,15 +36,6 @@
-
-
-
-
- مدیریت آزمونها
-
-
-
-
@@ -55,6 +46,20 @@
+
+
+
+ مدیریت آزمونها
+
+
+
+
+
+
+ دستهبندی آزمونها
+
+
+
diff --git a/resources/views/admin/quiz-categories/index.blade.php b/resources/views/admin/quiz-categories/index.blade.php
new file mode 100644
index 0000000..45c4b68
--- /dev/null
+++ b/resources/views/admin/quiz-categories/index.blade.php
@@ -0,0 +1,82 @@
+@extends('admin.layouts.app')
+
+@section('content')
+
+
+
+
+
+
+
+
+
دستهبندیهای موجود
+
+
+
+
+ | عنوان |
+ تعداد آزمونها |
+ وضعیت |
+ عملیات |
+
+
+
+ @forelse($categories as $category)
+
+ | {{ $category->title }} |
+ {{ $category->quizzes_count }} آزمون |
+
+ @if($category->is_active)
+ فعال
+ @else
+ غیرفعال
+ @endif
+ |
+
+
+ |
+
+ @empty
+
+ | هیچ دستهبندی یافت نشد. |
+
+ @endforelse
+
+
+
+
+
+
+
+@endsection
diff --git a/routes/web.php b/routes/web.php
index 9308f66..92fe1ff 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -31,8 +31,8 @@ use App\Http\Controllers\api\PayController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\TicketController;
use App\Http\Controllers\Admin\DashboardController;
-// 1. Add the QuizController import here
use App\Http\Controllers\Admin\QuizController;
+use App\Http\Controllers\Admin\QuizCategoryController;
Route::get('payment/callback', [PayController::class, 'callback']);
@@ -76,6 +76,7 @@ Route::middleware(['auth', config('jetstream.auth_session')])->group(function ()
Route::get('quizzes/{quiz}/questions', [QuizController::class, 'questions'])->name('quizzes.questions.index');
Route::post('quizzes/{quiz}/questions', [QuizController::class, 'storeQuestion'])->name('quizzes.questions.store');
Route::delete('questions/{question}', [QuizController::class, 'destroyQuestion'])->name('questions.destroy');
+ Route::resource('quiz-categories', QuizCategoryController::class)->except(['create', 'show', 'edit', 'update']);
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
});