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') +
    + +
    +
    +
    +
    افزودن دسته‌بندی جدید
    +
    +
    +
    + @csrf +
    + + +
    + +
    + + +
    + +
    + + +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    دسته‌بندی‌های موجود
    +
    + + + + + + + + + + + @forelse($categories as $category) + + + + + + + @empty + + + + @endforelse + +
    عنوانتعداد آزمون‌هاوضعیتعملیات
    {{ $category->title }}{{ $category->quizzes_count }} آزمون + @if($category->is_active) + فعال + @else + غیرفعال + @endif + +
    + @csrf + @method('DELETE') + +
    +
    هیچ دسته‌بندی یافت نشد.
    +
    +
    +
    +
    +
    +@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'); });