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

161 lines
4.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Banner;
use App\Models\Game;
use App\Traits\ApiResponseHelper;
use App\Traits\ImageHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class GameController extends Controller
{
use ApiResponseHelper, ImageHelper;
public function index()
{
$pageConfigs = [
'pageHeader' => true,
'showMenu' => true
];
$breadcrumbs = [['link' => '/', 'name' => 'Home'], ['name' => 'GAMES']];
$createUrl = [['url' => 'create', 'name' => "Create", 'slug' => 'game']];
$banners = Game::all();
return view('content.games.index', [
'breadcrumbs' => $breadcrumbs,
'pageConfigs' => $pageConfigs,
'createUrl' => $createUrl,
'banners' => $banners
]);
}
public function create()
{
$pageConfigs = [
'pageHeader' => true,
'showMenu' => true
];
$breadcrumbs = [['link' => '/admin/banner', 'name' => 'Game'], ['name' => 'Add']];
return view('content.games.create', [
'pageConfigs' => $pageConfigs,
'breadcrumbs' => $breadcrumbs,
]);
}
public function store(Request $request)
{
$request->validate([
'title' => ['required', 'min: 3'],
'url' => ['nullable'],
'status' => ['required'],
'banner' => ['nullable', 'image'],
]);
try {
DB::beginTransaction();
$banner = new Game();
$banner->title = $request->title;
$banner->status = $request->status;
$banner->url = $request->url;
$banner->save();
if ($request->banner) {
$prefix = 'game';
$bannerImagePath = $this->uploadFile($request->banner, $prefix, false);
$banner->picture = $bannerImagePath;
$banner->save();
}
DB::commit();
return redirect()->route('game.index')->with([
'success' => "Game created successfully"
]);
} catch (\Throwable $exception) {
DB::rollBack();
return redirect()->back()->with([
'error' => $exception->getMessage()
]);
}
}
public function edit(Game $game)
{
$pageConfigs = [
'pageHeader' => true,
'showMenu' => true
];
$breadcrumbs = [['link' => '/admin/game', 'name' => 'Game'], ['name' => 'Edit']];
return view('content.games.edit', [
'pageConfigs' => $pageConfigs,
'breadcrumbs' => $breadcrumbs,
'banner' => $game
]);
}
public function update(Request $request, Game $game)
{
$request->validate([
'title' => ['required', 'min: 3'],
'url' => ['nullable','url'],
'status' => ['required'],
'banner' => ['nullable', 'image'],
]);
try {
DB::beginTransaction();
$game->title = $request->title;
$game->url = $request->url;
$game->status = $request->status;
$game->save();
if ($request->hasFile('banner')) {
$prefix = 'banner';
$bannerImagePath = $this->updateFile($request->banner, $game->picture, $prefix, false);
$game->picture = $bannerImagePath;
$game->update();
}
DB::commit();
return redirect()->route('game.index')->with([
'success' => "Game updated successfully"
]);
} catch (\Throwable $exception) {
DB::rollBack();
return redirect()->back()->with([
'error' => $exception->getMessage()
]);
}
}
public function destroy(Game $game)
{
try {
DB::beginTransaction();
$this->deleteFile($game->picture);
$game->delete();
DB::commit();
return redirect()->back()->with([
'success' => "Game deleted successfully"
]);
} catch (\Throwable $exception) {
DB::rollBack();
return redirect()->back()->with([
'error' => $exception->getMessage()
]);
}
}
}