Files
sccs_laravel/app/Http/Controllers/CourseController.php
2025-11-04 16:23:40 +05:00

151 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Banner;
use App\Models\Category;
use App\Models\Course;
use App\Models\Transaction;
use App\Models\User;
use App\Traits\ApiResponseHelper;
use App\Traits\ImageHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CourseController extends Controller
{
use ApiResponseHelper, ImageHelper;
public function create(User $user)
{
$pageConfigs = [
'pageHeader' => 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()
]);
}
}
}