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