middleware('auth'); } /** * 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) { //$this->authorize('view', $list); Gate::authorize('view', $list); $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) { Gate::authorize('update', $list); return view('lists.edit', compact('list')); } /** * Update the specified resource in storage. */ public function update(Request $request, GameList $list) { Gate::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) { Gate::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) { Gate::authorize('update', $list); $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) { Gate::authorize('update', $list); $list->games()->detach($game->id); return redirect()->back()->with('success', 'Game removed from list successfully.'); } }