From 652f33ec8ad9974b764d2ba89720d115c921a859 Mon Sep 17 00:00:00 2001 From: Edson Salvatore Date: Sun, 3 May 2026 22:45:40 -0500 Subject: [PATCH] feat: crud da wishlist concluido, testado e backdoor removido --- app/Http/Controllers/WishlistController.php | 41 ++++++++++++++++++--- routes/api.php | 9 ++++- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/WishlistController.php b/app/Http/Controllers/WishlistController.php index 2b1499d..68b82f4 100644 --- a/app/Http/Controllers/WishlistController.php +++ b/app/Http/Controllers/WishlistController.php @@ -12,7 +12,6 @@ class WishlistController extends Controller */ public function store(Request $request) { - // 1. Valida se o Frontend mandou o ID do jogo corretamente $validated = $request->validate([ 'game_id' => 'required|string', 'is_wishlist' => 'boolean', @@ -21,12 +20,8 @@ class WishlistController extends Controller 'price_alert' => 'boolean', ]); - // 2. Pega o ID do usuário que a nossa fechadura extraiu do Token JWT $userId = $request->get('auth_id'); - // 3. Salva no banco. - // O updateOrCreate procura se esse usuário já tem esse jogo na lista. - // Se tiver, ele apenas atualiza as flags (ex: ativa o price_alert). Se não tiver, ele cria um novo. $wishlistItem = WishlistItem::updateOrCreate( [ 'user_id' => $userId, @@ -40,10 +35,44 @@ class WishlistController extends Controller ] ); - // 4. Devolve a resposta de sucesso return response()->json([ 'message' => 'Jogo salvo na lista com sucesso!', 'data' => $wishlistItem ], 201); } + + /** + * Lista todos os jogos salvos pelo usuário logado. + */ + public function index(Request $request) + { + $userId = $request->get('auth_id'); + + // Busca no banco todos os registros que pertencem a este usuário + $items = WishlistItem::where('user_id', $userId)->get(); + + return response()->json([ + 'data' => $items + ], 200); + } + + /** + * Remove um jogo da lista do usuário. + */ + public function destroy(Request $request, $game_id) + { + $userId = $request->get('auth_id'); + + // Procura o jogo específico deste usuário e deleta + $deleted = WishlistItem::where('user_id', $userId) + ->where('game_id', $game_id) + ->delete(); + + // Se o jogo não existia na lista, avisa o Frontend + if (!$deleted) { + return response()->json(['message' => 'Jogo não encontrado na sua lista.'], 404); + } + + return response()->json(['message' => 'Jogo removido com sucesso!'], 200); + } } \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index 7e31c57..de32f63 100644 --- a/routes/api.php +++ b/routes/api.php @@ -11,12 +11,17 @@ Route::get('/ping', function () { // Todas as rotas dentro deste grupo passam pela fechadura JWT Route::middleware(['jwt.auth'])->group(function () { - // Rota de teste antiga Route::get('/teste-fechadura', function (Request $request) { return response()->json(['usuario_logado_id' => $request->get('auth_id')]); }); - // A nossa nova rota real de adicionar aos favoritos! + // Rota para Adicionar jogo Route::post('/wishlist', [WishlistController::class, 'store']); + // Rota para Listar os jogos do usuário logado + Route::get('/wishlist', [WishlistController::class, 'index']); + + // Rota para Remover um jogo (passando o ID do jogo na URL) + Route::delete('/wishlist/{game_id}', [WishlistController::class, 'destroy']); + }); \ No newline at end of file