true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/', 'name' => 'Home'], ['name' => 'Banners']]; $createUrl = [['url' => 'create', 'name' => "Create", 'slug' => 'banner']]; $banners = Banner::all(); return view('content.banners.index', [ 'breadcrumbs' => $breadcrumbs, 'pageConfigs' => $pageConfigs, 'createUrl' => $createUrl, 'banners' => $banners ]); } public function create() { $pageConfigs = [ 'pageHeader' => true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/admin/banner', 'name' => 'Banners'], ['name' => 'Add']]; return view('content.banners.create', [ 'pageConfigs' => $pageConfigs, 'breadcrumbs' => $breadcrumbs, ]); } public function store(Request $request) { $request->validate([ 'title' => ['required', 'min: 3'], 'external_link' => ['nullable'], 'status' => ['required'], 'type' => ['required'], 'banner' => ['nullable', 'image'], ]); try { DB::beginTransaction(); $banner = new Banner(); $banner->title = $request->title; $banner->external_url = $request->external_link; $banner->type = $request->type; $banner->status = $request->status; $banner->created_by = Auth::user()->role; $banner->save(); if ($request->banner) { $prefix = 'banner'; $bannerImagePath = $this->uploadFile($request->banner, $prefix, false); $banner->picture = $bannerImagePath; $banner->save(); } DB::commit(); return redirect()->route('banner.index')->with([ 'success' => "Banner created successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } public function edit(Banner $banner) { $pageConfigs = [ 'pageHeader' => true, 'showMenu' => true ]; $breadcrumbs = [['link' => '/admin/banner', 'name' => 'Banners'], ['name' => 'Edit']]; return view('content.banners.edit', [ 'pageConfigs' => $pageConfigs, 'breadcrumbs' => $breadcrumbs, 'banner' => $banner ]); } public function update(Request $request, Banner $banner) { $request->validate([ 'title' => ['required', 'min: 3'], 'external_link' => ['nullable','url'], 'status' => ['required'], 'banner' => ['nullable', 'image'], ]); $user = Auth::user(); if ($banner->created_by =='ADMIN' && $user->role != 'ADMIN'){ return redirect()->back()->with([ 'error' => 'You do not have the permission to perform this task' ]); } try { DB::beginTransaction(); $banner->title = $request->title; $banner->external_url = $request->external_link; $banner->status = $request->status; $banner->save(); if ($request->hasFile('banner')) { $prefix = 'banner'; $bannerImagePath = $this->updateFile($request->banner, $banner->picture, $prefix, false); $banner->picture = $bannerImagePath; $banner->update(); } DB::commit(); return redirect()->route('banner.index')->with([ 'success' => "Banner updated successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } public function destroy(Banner $banner) { $user = Auth::user(); if ($banner->created_by =='ADMIN' && $user->role != 'ADMIN'){ return redirect()->back()->with([ 'error' => 'You do not have the permission to perform this task' ]); } try { DB::beginTransaction(); $this->deleteFile($banner->picture); $banner->delete(); DB::commit(); return redirect()->back()->with([ 'success' => "Banner deleted successfully" ]); } catch (\Throwable $exception) { DB::rollBack(); return redirect()->back()->with([ 'error' => $exception->getMessage() ]); } } }