<?php
declare(strict_types=1);

require_once __DIR__ . '/_bootstrap.php';
admin_require_login();

$id = (int) ($_POST['id'] ?? 0);
$status = trim((string) ($_POST['status'] ?? ''));
$observacao = trim((string) ($_POST['observacao'] ?? ''));
$permitidos = ['pendente', 'em_processamento', 'paga', 'reprovada', 'cancelada'];

if ($id <= 0 || !in_array($status, $permitidos, true)) {
    admin_flash('Pedido ou status inválido.', 'error');
    header('Location: retiradas_carteira.php');
    exit;
}

try {
    $processado = in_array($status, ['paga', 'reprovada', 'cancelada'], true);
    $stmt = db()->prepare(
        'UPDATE carteira_retiradas
         SET status = ?,
             observacao = ?,
             processado_por = CASE WHEN ? THEN ? ELSE processado_por END,
             processado_em = CASE WHEN ? THEN NOW() ELSE processado_em END
         WHERE id = ?'
    );
    $stmt->execute([
        $status,
        $observacao === '' ? null : $observacao,
        $processado ? 1 : 0,
        admin_current_user(),
        $processado ? 1 : 0,
        $id,
    ]);

    admin_flash('Pedido de resgate atualizado.');
} catch (Throwable $e) {
    admin_flash('Erro ao atualizar pedido: ' . $e->getMessage(), 'error');
}

header('Location: retiradas_carteira.php');
exit;
