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() ]); } } }