151 lines
4.5 KiB
PHP
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()
|
|
]);
|
|
}
|
|
}
|
|
|
|
}
|