/home2/mshostin/carnival.ms-hostingladz.com/app/Http/Controllers/BannerController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Banner;
use Illuminate\Support\Facades\File;
use Exception;
class BannerController extends Controller
{
public function index()
{
$banners = Banner::all();
return view('dashboard.admin.banners.index', compact('banners'));
}
public function create()
{
return view('dashboard.admin.banners.create');
}
public function store(Request $request)
{
$request->validate([
// 'banner_image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048|dimensions:width=870,height=328',
'banner_image' => 'required|mimes:jpeg,png,jpg,gif,mp4,avi,mov,wmv|max:101200',
'type' => 'required',
'description' => 'nullable|string',
'status' => 'boolean',
]);
$banner_image = 'banner_image/' . time() . '.' . $request->banner_image->extension();
$request->banner_image->move(public_path('banner_image'), $banner_image);
$poster = null;
if($request->has('poster') && $request->poster != null && $request->poster != '')
{
$poster = 'poster_image/' . time() . '.' . $request->poster->extension();
$request->poster->move(public_path('poster_image'), $poster);
}
Banner::create([
'banner_image' => $banner_image,
'poster' => $poster,
'type' => $request->type,
'description' => $request->description,
'status' => $request->status ?? 1,
]);
return redirect()->route('banners.index')->with('success', 'Banner created successfully.');
}
public function edit($id)
{
$banner = Banner::findOrFail($id);
return view('dashboard.admin.banners.edit', compact('banner'));
}
public function update(Request $request, $id)
{
$request->validate([
'banner_image' => 'nullable|mimes:jpeg,png,jpg,gif,mp4,avi,mov,wmv|max:101200',
// 'banner_image' => 'sometimes|image|mimes:jpeg,png,jpg,gif|max:2048|dimensions:width=870,height=328',
'description' => 'nullable|string',
'status' => 'boolean',
]);
$banner = Banner::findOrFail($id);
if ($request->hasFile('banner_image')) {
// Delete old banner image file if it exists
if ($banner->banner_image && File::exists(public_path($banner->banner_image))) {
File::delete(public_path($banner->banner_image));
}
$imageName = time() . '.' . $request->banner_image->getClientOriginalExtension();
$request->banner_image->move(public_path('banner_image'), $imageName);
$banner->banner_image = 'banner_image/' . $imageName;
}
if($request->has('poster') && $request->poster != null && $request->poster != '')
{
// Delete old poster image file if it exists
if ($banner->poster && File::exists(public_path($banner->poster))) {
File::delete(public_path($banner->poster));
}
$poster = 'poster_image/' . time() . '.' . $request->poster->extension();
$request->poster->move(public_path('poster_image'), $poster);
$banner->poster = $poster;
}
$banner->description = $request->description;
$banner->status = $request->status ?? 1;
$banner->type = $request->type;
$banner->save();
return redirect()->route('banners.index')->with('success', 'Banner updated successfully.');
}
public function getDeletionDetails($id)
{
try {
$banner = Banner::findOrFail($id);
$deletionDetails = [
'banner' => [
'id' => $banner->id,
'type' => $banner->type,
'description' => $banner->description,
'banner_image' => $banner->banner_image,
'poster' => $banner->poster
],
'files_to_delete' => []
];
// Add banner image to files to delete
if ($banner->banner_image) {
$deletionDetails['files_to_delete'][] = [
'path' => $banner->banner_image,
'full_path' => public_path($banner->banner_image),
'type' => 'Banner Image'
];
}
// Add poster image to files to delete
if ($banner->poster) {
$deletionDetails['files_to_delete'][] = [
'path' => $banner->poster,
'full_path' => public_path($banner->poster),
'type' => 'Poster Image'
];
}
return response()->json($deletionDetails);
} catch (\Exception $e) {
return response()->json(['error' => 'Error getting deletion details: ' . $e->getMessage()], 500);
}
}
public function destroy($id)
{
try {
$banner = Banner::findOrFail($id);
// Delete banner image file
if ($banner->banner_image && File::exists(public_path($banner->banner_image))) {
File::delete(public_path($banner->banner_image));
}
// Delete poster image file
if ($banner->poster && File::exists(public_path($banner->poster))) {
File::delete(public_path($banner->poster));
}
// Delete the banner record
$banner->delete();
return redirect()->route('banners.index')->with('success', 'Banner and associated files deleted successfully.');
} catch (\Exception $e) {
return redirect()->back()->with('error', 'Error deleting banner: ' . $e->getMessage());
}
}
}