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

174 lines
5.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Banner;
use App\Traits\ApiResponseHelper;
use App\Traits\ImageHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Monolog\Handler\IFTTTHandler;
class BannerController extends Controller
{
use ApiResponseHelper, ImageHelper;
public function index()
{
$pageConfigs = [
'pageHeader' => 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()
]);
}
}
}