diff --git a/app/Http/Controllers/Backend/Courses/MaterialController.php b/app/Http/Controllers/Backend/Courses/MaterialController.php index abc23a2..9d80509 100644 --- a/app/Http/Controllers/Backend/Courses/MaterialController.php +++ b/app/Http/Controllers/Backend/Courses/MaterialController.php @@ -7,7 +7,6 @@ use Illuminate\Http\Request; use App\Models\Course; use Exception; -use File; class MaterialController extends Controller { @@ -42,7 +41,7 @@ public function store(Request $request) $material->content_url = $request->contentURL; if ($material->save()) { - $this->notice::success('Data Saved'); + $this->notice::success('Data Saved'); return redirect()->route('material.index'); } else { $this->notice::error('Please try again'); diff --git a/app/Http/Controllers/QuestionController.php b/app/Http/Controllers/Backend/Quizzes/QuestionController.php similarity index 84% rename from app/Http/Controllers/QuestionController.php rename to app/Http/Controllers/Backend/Quizzes/QuestionController.php index 348fecc..1d0f674 100644 --- a/app/Http/Controllers/QuestionController.php +++ b/app/Http/Controllers/Backend/Quizzes/QuestionController.php @@ -1,10 +1,12 @@ title = $request->quizTitle; + $quiz->course_id = $request->courseId; + + if ($quiz->save()) { + $this->notice::success('Data Saved'); + return redirect()->route('quiz.index'); + } else { + $this->notice::error('Please try again'); + return redirect()->back()->withInput(); + } + } catch (Exception $e) { + dd($e); + $this->notice::error('Please try again'); + return redirect()->back()->withInput(); + } + } + + /** + * Display the specified resource. + */ + public function show(Quiz $quiz) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + $course = Course::get(); + $quiz = Quiz::findOrFail(encryptor('decrypt', $id)); + return view('backend.quiz.edit', compact('course', 'quiz')); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, $id) + { + try { + $quiz = Quiz::findOrFail(encryptor('decrypt', $id)); + $quiz->title = $request->quizTitle; + $quiz->course_id = $request->courseId; + + if ($quiz->save()) { + $this->notice::success('Data Saved'); + return redirect()->route('quiz.index'); + } else { + $this->notice::error('Please try again'); + return redirect()->back()->withInput(); + } + } catch (Exception $e) { + dd($e); + $this->notice::error('Please try again'); + return redirect()->back()->withInput(); + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + $data = Quiz::findOrFail(encryptor('decrypt', $id)); + if ($data->delete()) { + $this->notice::error('Data Deleted!'); + return redirect()->back(); + } + } +} diff --git a/app/Http/Controllers/QuizController.php b/app/Http/Controllers/QuizController.php deleted file mode 100644 index 1232957..0000000 --- a/app/Http/Controllers/QuizController.php +++ /dev/null @@ -1,66 +0,0 @@ -hasMany(Material::class); } + + public function quiz() + { + return $this->hasMany(Quiz::class); + } } diff --git a/app/Models/Question.php b/app/Models/Question.php index b1b8eaa..fdc70a3 100644 --- a/app/Models/Question.php +++ b/app/Models/Question.php @@ -8,4 +8,8 @@ class Question extends Model { use HasFactory; + + public function quiz(){ + return $this->belongsTo(Quiz::class); + } } diff --git a/app/Models/Quiz.php b/app/Models/Quiz.php index ba8f006..60da13e 100644 --- a/app/Models/Quiz.php +++ b/app/Models/Quiz.php @@ -8,4 +8,14 @@ class Quiz extends Model { use HasFactory; + + public function course() + { + return $this->belongsTo(Course::class); + } + + public function question() + { + return $this->hasMany(Question::class); + } } diff --git a/database/migrations/2023_11_26_153639_create_quizzes_table.php b/database/migrations/2023_11_26_153639_create_quizzes_table.php index 5e1f56b..76357e1 100644 --- a/database/migrations/2023_11_26_153639_create_quizzes_table.php +++ b/database/migrations/2023_11_26_153639_create_quizzes_table.php @@ -21,7 +21,7 @@ public function up(): void $table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade'); }); } - + /** * Reverse the migrations. */ diff --git a/database/migrations/2023_11_26_153659_create_questions_table.php b/database/migrations/2023_11_26_153659_create_questions_table.php index fc827a7..33ea378 100644 --- a/database/migrations/2023_11_26_153659_create_questions_table.php +++ b/database/migrations/2023_11_26_153659_create_questions_table.php @@ -29,5 +29,5 @@ public function up(): void public function down(): void { Schema::dropIfExists('questions'); - } + } }; diff --git a/resources/views/backend/layouts/app.blade.php b/resources/views/backend/layouts/app.blade.php index 065b9c8..9282c53 100644 --- a/resources/views/backend/layouts/app.blade.php +++ b/resources/views/backend/layouts/app.blade.php @@ -235,8 +235,8 @@ class="las la-chalkboard-teacher">Instructors Payments
  • Quizzes diff --git a/resources/views/backend/quiz/create.blade.php b/resources/views/backend/quiz/create.blade.php new file mode 100644 index 0000000..dfd3c0a --- /dev/null +++ b/resources/views/backend/quiz/create.blade.php @@ -0,0 +1,92 @@ +@extends('backend.layouts.app') +@section('title', 'Add Quiz') + +@push('styles') + + + +@endpush + +@section('content') + +
    + +
    + +
    +
    +
    +

    Add Quiz

    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    Basic Info
    +
    +
    +
    + @csrf +
    +
    +
    + + +
    + @if($errors->has('quizTitle')) + {{ $errors->first('quizTitle') }} + @endif +
    +
    +
    + + +
    + @if($errors->has('courseId')) + {{ $errors->first('courseId') }} + @endif +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +@endsection + +@push('scripts') + + + + + + + +@endpush \ No newline at end of file diff --git a/resources/views/backend/quiz/edit.blade.php b/resources/views/backend/quiz/edit.blade.php new file mode 100644 index 0000000..6687b29 --- /dev/null +++ b/resources/views/backend/quiz/edit.blade.php @@ -0,0 +1,95 @@ +@extends('backend.layouts.app') +@section('title', 'Edit Quiz') + +@push('styles') + + + +@endpush + +@section('content') + +
    + +
    + +
    +
    +
    +

    Edit Quiz

    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    Basic Info
    +
    +
    +
    + @csrf + @method('PATCH') + +
    +
    +
    + + +
    + @if($errors->has('quizTitle')) + {{ $errors->first('quizTitle') }} + @endif +
    +
    +
    + + +
    + @if($errors->has('courseId')) + {{ $errors->first('courseId') }} + @endif +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +@endsection + +@push('scripts') + + + + + + + +@endpush \ No newline at end of file diff --git a/resources/views/backend/quiz/index.blade.php b/resources/views/backend/quiz/index.blade.php new file mode 100644 index 0000000..507ecba --- /dev/null +++ b/resources/views/backend/quiz/index.blade.php @@ -0,0 +1,106 @@ +@extends('backend.layouts.app') +@section('title', 'Quiz List') + +@push('styles') + + +@endpush + +@section('content') + +
    + +
    + +
    +
    +
    +

    Quiz List

    +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    +
    +
    +

    All Quizzes List

    + + Add new +
    +
    +
    + + + + + + + + + + + @forelse ($quiz as $q) + + + + + + + @empty + + + + @endforelse + +
    {{__('#')}}{{__('Quiz Title')}}{{__('Course')}}{{__('Action')}}
    {{$q->id}}{{$q->title}}{{$q->course?->title_en}} + + +
    + @csrf + @method('DELETE') +
    +
    No Quiz Found
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +@endsection + +@push('scripts') + + + + +@endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 3a695c5..0c06f54 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,6 +11,7 @@ use App\Http\Controllers\Backend\Instructors\InstructorController as instructor; use App\Http\Controllers\Backend\Courses\CourseController as course; use App\Http\Controllers\Backend\Courses\MaterialController as material; +use App\Http\Controllers\Backend\Quizzes\QuizController as quiz; /* |-------------------------------------------------------------------------- @@ -43,6 +44,7 @@ Route::resource('courseCategory', courseCategory::class); Route::resource('course', course::class); Route::resource('material', material::class); + Route::resource('quiz', quiz::class); Route::get('permission/{role}', [permission::class, 'index'])->name('permission.list'); Route::post('permission/{role}', [permission::class, 'save'])->name('permission.save'); });