Files
cleargame/app/Http/Controllers/GameListController.php
T

131 lines
3.2 KiB
PHP
Raw Normal View History

2025-04-12 17:18:33 +03:00
<?php
namespace App\Http\Controllers;
use App\Models\Game;
use App\Models\GameList;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
2025-06-13 23:06:13 +03:00
use Illuminate\Support\Facades\Gate;
2025-04-12 17:18:33 +03:00
class GameListController extends Controller
{
public function __construct()
{
2025-06-13 23:06:13 +03:00
//$this->middleware('auth');
2025-04-12 17:18:33 +03:00
}
/**
* Display a listing of the resource.
*/
public function index()
{
$lists = Auth::user()->lists()->withCount('games')->get();
return view('lists.index', compact('lists'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('lists.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'description' => 'nullable|string'
]);
Auth::user()->lists()->create([
'name' => $request->name,
'description' => $request->description
]);
return redirect()->route('lists.index')->with('success', 'List created successfully.');
}
/**
* Display the specified resource.
*/
public function show(GameList $list)
{
2025-06-13 23:06:13 +03:00
//$this->authorize('view', $list);
Gate::authorize('view', $list);
2025-04-12 17:18:33 +03:00
$games = $list->games()->paginate(12);
return view('lists.show', compact('list', 'games'));
}
/**
* Show the form for editing the specified resource.
*/
public function edit(GameList $list)
{
$this->authorize('update', $list);
return view('lists.edit', compact('list'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, GameList $list)
{
$this->authorize('update', $list);
$request->validate([
'name' => 'required|string|max:255',
'description' => 'nullable|string'
]);
$list->update([
'name' => $request->name,
'description' => $request->description
]);
return redirect()->route('lists.show', $list)->with('success', 'List updated successfully.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(GameList $list)
{
$this->authorize('delete', $list);
if ($list->is_default) {
return redirect()->back()->with('error', 'Cannot delete default lists.');
}
$list->delete();
return redirect()->route('lists.index')->with('success', 'List deleted successfully.');
}
public function addGame(Request $request, GameList $list)
{
2025-06-13 23:06:13 +03:00
Gate::authorize('update', $list);
2025-04-12 17:18:33 +03:00
$request->validate([
'game_id' => 'required|exists:games,id'
]);
$list->games()->attach($request->game_id);
return redirect()->back()->with('success', 'Game added to list successfully.');
}
public function removeGame(GameList $list, Game $game)
{
$this->authorize('update', $list);
$list->games()->detach($game->id);
return redirect()->back()->with('success', 'Game removed from list successfully.');
}
}