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