From bb69e7f953dc207ffb32369d121371fdce8e341e Mon Sep 17 00:00:00 2001 From: "m.razaghi" Date: Fri, 7 Aug 2026 21:30:03 +0330 Subject: [PATCH] Fixed quiz --- .../Admin/QuizSubjectController.php | 44 +++++++++++ resources/views/admin/partial/menu.blade.php | 7 ++ .../views/admin/quiz-subjects/index.blade.php | 77 +++++++++++++++++++ routes/web.php | 3 + 4 files changed, 131 insertions(+) create mode 100644 app/Http/Controllers/Admin/QuizSubjectController.php create mode 100644 resources/views/admin/quiz-subjects/index.blade.php diff --git a/app/Http/Controllers/Admin/QuizSubjectController.php b/app/Http/Controllers/Admin/QuizSubjectController.php new file mode 100644 index 0000000..5336105 --- /dev/null +++ b/app/Http/Controllers/Admin/QuizSubjectController.php @@ -0,0 +1,44 @@ +latest()->get(); + return view('admin.quiz-subjects.index', compact('subjects')); + } + + public function store(Request $request) + { + $request->validate([ + 'title' => 'required|string|max:255', + ]); + + QuizSubject::create([ + 'title' => $request->title, + // Generate a unique slug for potential API/URL usage + 'slug' => Str::slug($request->title) . '-' . time(), + ]); + + return back()->with('success', 'درس با موفقیت اضافه شد.'); + } + + public function destroy(QuizSubject $quiz_subject) + { + // Prevent deletion if questions are already assigned to this subject + if ($quiz_subject->questions()->count() > 0) { + return back()->with('error', 'این درس دارای سوال است و نمی‌تواند حذف شود. ابتدا سوالات مربوطه را ویرایش یا حذف کنید.'); + } + + $quiz_subject->delete(); + return back()->with('success', 'درس با موفقیت حذف شد.'); + } +} \ No newline at end of file diff --git a/resources/views/admin/partial/menu.blade.php b/resources/views/admin/partial/menu.blade.php index e528445..77adc7e 100644 --- a/resources/views/admin/partial/menu.blade.php +++ b/resources/views/admin/partial/menu.blade.php @@ -60,6 +60,13 @@ +
  • + + + مدیریت دروس + +
  • +
  • diff --git a/resources/views/admin/quiz-subjects/index.blade.php b/resources/views/admin/quiz-subjects/index.blade.php new file mode 100644 index 0000000..98ec42a --- /dev/null +++ b/resources/views/admin/quiz-subjects/index.blade.php @@ -0,0 +1,77 @@ +@extends('admin.layouts.app') + +@section('content') +
    + +
    +
    +
    +
    افزودن درس جدید
    +
    +
    + + @if ($errors->any()) +
    +
      + @foreach ($errors->all() as $error) +
    • {{ $error }}
    • + @endforeach +
    +
    + @endif + +
    + @csrf +
    + + +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    دروس ثبت شده
    +
    + + + + + + + + + + @forelse($subjects as $subject) + + + + + + @empty + + + + @endforelse + +
    عنوان درستعداد سوالات مرتبطعملیات
    {{ $subject->title }} + {{ $subject->questions_count }} سوال + +
    + @csrf + @method('DELETE') + +
    +
    هیچ درسی یافت نشد.
    +
    +
    +
    +
    +
    +@endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 92fe1ff..f18bdf4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -33,6 +33,7 @@ use App\Http\Controllers\Admin\TicketController; use App\Http\Controllers\Admin\DashboardController; use App\Http\Controllers\Admin\QuizController; use App\Http\Controllers\Admin\QuizCategoryController; +use App\Http\Controllers\Admin\QuizSubjectController; Route::get('payment/callback', [PayController::class, 'callback']); @@ -78,5 +79,7 @@ Route::middleware(['auth', config('jetstream.auth_session')])->group(function () Route::delete('questions/{question}', [QuizController::class, 'destroyQuestion'])->name('questions.destroy'); Route::resource('quiz-categories', QuizCategoryController::class)->except(['create', 'show', 'edit', 'update']); + Route::resource('quiz-subjects', QuizSubjectController::class)->except(['create', 'show', 'edit', 'update']); + Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); });