<?php
declare(strict_types=1);
header('Content-Type: application/json; charset=utf-8');
require_once __DIR__.'/../inc/spin_lib.php';

/*
 * Parâmetros aceitos:
 *   GET/POST: spin (id), token (redeem_token)
 * Fluxo:
 *   1) valida se spin existe e tem token correspondente em spin_prizes
 *   2) se status='reserved', efetiva e marca 'claimed'
 */
$spin = isset($_REQUEST['spin']) ? (int)$_REQUEST['spin'] : 0;
$token= $_REQUEST['token'] ?? '';

if(!$spin || !$token){ http_response_code(400); echo json_encode(['ok'=>false,'message'=>'Parâmetros inválidos']); exit; }

$st = $pdo->prepare("SELECT id, roulette_id, segment_id, status, payload FROM spin_prizes WHERE spin_id=? AND redeem_token=?");
$st->execute([$spin, $token]);
$prize = $st->fetch();

if(!$prize){ http_response_code(404); echo json_encode(['ok'=>false,'message'=>'Prêmio não encontrado']); exit; }
if($prize['status'] !== 'reserved'){ echo json_encode(['ok'=>false,'message'=>'Prêmio já resgatado/cancelado']); exit; }

// === Aqui entra a “entrega real” (crédito, cupom, etc.) ===
// Exemplo: apenas marca como resgatado.
$upd = $pdo->prepare("UPDATE spin_prizes SET status='claimed', claimed_at=NOW() WHERE id=?");
$upd->execute([$prize['id']]);

echo json_encode(['ok'=>true, 'payload'=> json_decode($prize['payload'], true) ]);