true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/admin/students/'.$user->id.'/edit', 'name' => 'Courses'], ['name' => 'Add']]; $categories = Category::all(); if ($categories->count() == 0){ return redirect()->back()->with(['error'=>'Please add a course category first.']); } return view('content.users.courses.create', [ 'pageConfigs' => $pageConfigs, 'breadcrumbs' => $breadcrumbs, 'categories' => $categories, 'user' => $user ]); } public function store(Request $request) { $request->validate([ 'student_id' => ['required'], 'category' => ['required'], 'fee' => ['required'], 'start_date' => ['required'], 'end_date' => ['required'], 'note' => ['nullable'], ]); try { DB::beginTransaction(); $course = new Course(); $course->student_id = $request->student_id; $course->category_id = $request->category; $course->total_fee = $request->fee; $course->start_date = $request->start_date; $course->end_date = $request->end_date; $course->notes = $request->note; $course->save(); DB::commit(); return redirect()->route('students.edit', $request->student_id)->with([ 'success' => "Course created successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } public function edit(Course $course) { $pageConfigs = [ 'pageHeader' => true, 'showMenu' => true ]; $breadcrumbs = [['link' =>'/admin/students/'.$course->student_id.'/edit', 'name' => 'Courses'], ['name' => 'Edit']]; $categories = Category::all(); $transactions = Transaction::where('course_id',$course->id)->get(); return view('content.users.courses.edit', [ 'pageConfigs' => $pageConfigs, 'breadcrumbs' => $breadcrumbs, 'course' => $course, 'categories' => $categories, 'transactions'=>$transactions ]); } public function update(Request $request, Course $course) { $request->validate([ 'category' => ['required'], 'fee' => ['required'], 'start_date' => ['required'], 'end_date' => ['required'], 'certificate_issued_at' => ['nullable'], 'note' => ['nullable'], ]); try { DB::beginTransaction(); $course->category_id = $request->category; $course->total_fee = $request->fee; $course->start_date = $request->start_date; $course->end_date = $request->end_date; $course->certificate_issued_at = $request->certificate_issued_at; $course->notes = $request->note; $course->update(); DB::commit(); return redirect()->back()->with([ 'success' => "Course updated successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } public function destroy(Course $course) { try { DB::beginTransaction(); if ($course->allTransactions->count() > 0){ foreach ($course->allTransactions as $transaction){ $transaction->delete(); } } $course->delete(); DB::commit(); return redirect()->back()->with([ 'success' => "Course deleted successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } }