177 lines
5.5 KiB
PHP
177 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Category;
|
|
use App\Models\CategoryNotes;
|
|
use App\Traits\ApiResponseHelper;
|
|
use App\Traits\ImageHelper;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class CategoryController extends Controller
|
|
{
|
|
use ApiResponseHelper, ImageHelper;
|
|
|
|
public function index()
|
|
{
|
|
$pageConfigs = [
|
|
'pageHeader' => true,
|
|
'showMenu' => true
|
|
];
|
|
|
|
$breadcrumbs = [['link' => '/', 'name' => 'Home'], ['name' => 'Course']];
|
|
$createUrl = [['url' => 'create', 'name' => "Course", 'slug' => 'category']];
|
|
$categories = Category::all();
|
|
|
|
return view('content.categories.index', [
|
|
'breadcrumbs' => $breadcrumbs,
|
|
'pageConfigs' => $pageConfigs,
|
|
'createUrl' => $createUrl,
|
|
'categories' => $categories
|
|
]);
|
|
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
|
|
$pageConfigs = [
|
|
'pageHeader' => true,
|
|
'showMenu' => true
|
|
];
|
|
|
|
$breadcrumbs = [['link' => '/admin/category', 'name' => 'Course'], ['name' => 'Add']];
|
|
|
|
return view('content.categories.create', [
|
|
'pageConfigs' => $pageConfigs,
|
|
'breadcrumbs' => $breadcrumbs,
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'name' => ['required', 'min: 3'],
|
|
'fee' => ['required'],
|
|
'duration' => ['required'],
|
|
'status' => ['required'],
|
|
'picture' => ['required', 'image'],
|
|
|
|
]);
|
|
try {
|
|
DB::beginTransaction();
|
|
$category = new Category();
|
|
$category->name = $request->name;
|
|
$category->fee = $request->fee;
|
|
$category->duration_in_days = $request->duration;
|
|
$category->status = $request->status;
|
|
$category->created_by = Auth::user()->role;
|
|
if ($request->hasFile('picture')) {
|
|
$prefix = 'category';
|
|
$categoryImagePath = $this->uploadFile($request->picture, $prefix, false);
|
|
$category->picture = $categoryImagePath;
|
|
}
|
|
$category->save();
|
|
DB::commit();
|
|
return redirect()->route('category.index')->with([
|
|
'success' => "Category created successfully"
|
|
]);
|
|
} catch (\Throwable $exception) {
|
|
DB::rollBack();
|
|
return redirect()->back()->with([
|
|
'error' => $exception->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function edit(Category $category)
|
|
{
|
|
|
|
$pageConfigs = [
|
|
'pageHeader' => true,
|
|
'showMenu' => true
|
|
];
|
|
$breadcrumbs = [['link' => '/admin/category', 'name' => 'Course'], ['name' => 'Edit']];
|
|
$notes = CategoryNotes::where('category_id', $category->id)->get();
|
|
return view('content.categories.edit', [
|
|
'pageConfigs' => $pageConfigs,
|
|
'breadcrumbs' => $breadcrumbs,
|
|
'category' => $category,
|
|
'notes' => $notes,
|
|
]);
|
|
}
|
|
|
|
public function update(Request $request, Category $category)
|
|
{
|
|
|
|
$request->validate([
|
|
'name' => ['required', 'min: 3'],
|
|
'fee' => ['required'],
|
|
'duration' => ['required'],
|
|
'status' => ['required'],
|
|
'picture' => ['nullable', 'image'],
|
|
|
|
]);
|
|
if ($category->created_by =='ADMIN' && auth()->user()->role != 'ADMIN'){
|
|
return redirect()->back()->with([
|
|
'error' => 'You do not have the permission to perform this task'
|
|
]);
|
|
}
|
|
try {
|
|
|
|
DB::beginTransaction();
|
|
$category->name = $request->name;
|
|
$category->fee = $request->fee;
|
|
$category->duration_in_days = $request->duration;
|
|
$category->status = $request->status;
|
|
if ($request->hasFile('picture')) {
|
|
$prefix = 'category';
|
|
$categoryImagePath = $this->updateFile($request->picture, $category->picture, $prefix, false);
|
|
$category->picture = $categoryImagePath;
|
|
}
|
|
$category->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(Category $category)
|
|
{
|
|
|
|
if ($category->created_by =='ADMIN' && auth()->user()->role != 'ADMIN'){
|
|
return redirect()->back()->with([
|
|
'error' => 'You do not have the permission to perform this task'
|
|
]);
|
|
}
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
if ($category->courses->count() > 0){
|
|
return redirect()->back()->with([
|
|
'error' => 'Please delete all the records that are related to this course.'
|
|
]);
|
|
}
|
|
$this->deleteFile($category->picture);
|
|
$category->delete();
|
|
DB::commit();
|
|
return redirect()->back()->with([
|
|
'success' => "Course deleted successfully"
|
|
]);
|
|
} catch (\Throwable $exception) {
|
|
DB::rollBack();
|
|
return redirect()->back()->with([
|
|
'error' => $exception->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
}
|