<?php
/**
 * Gestão de Saques - Dashboard Admin
 * 
 * Permite ao admin aprovar, reprovar e marcar saques como pagos
 */

// Conexão com o banco de dados
// Nota: Autenticação já verificada em dashboard/index.php
require_once __DIR__ . '/../../config/config_db.php';
require_once __DIR__ . '/../../backend/financeiro_helper.php';

// Processar ações
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao'])) {
    $saque_id = intval($_POST['saque_id']);
    $acao = $_POST['acao'];
    
    try {
        // Buscar dados do saque
        $sql_saque = "SELECT usuario_id, valor, status FROM saques WHERE id = :id LIMIT 1";
        $stmt_saque = $pdo->prepare($sql_saque);
        $stmt_saque->execute([':id' => $saque_id]);
        $saque = $stmt_saque->fetch(PDO::FETCH_ASSOC);
        
        if (!$saque) {
            $_GET['erro'] = 'saque_nao_encontrado';
        } else {
            $pdo->beginTransaction();
            
            if ($acao === 'aprovar') {
                // Aprovar: manter bloqueado (aguardando pagamento)
                $sql_update = "UPDATE saques SET status = 'aprovado', updated_at = NOW() WHERE id = :id";
                $stmt_update = $pdo->prepare($sql_update);
                $stmt_update->execute([':id' => $saque_id]);
                
                $_GET['sucesso'] = 'saque_aprovado';
                
            } elseif ($acao === 'reprovar') {
                // Reprovar: devolver para disponível
                $sql_update = "UPDATE saques SET status = 'reprovado', updated_at = NOW() WHERE id = :id";
                $stmt_update = $pdo->prepare($sql_update);
                $stmt_update->execute([':id' => $saque_id]);
                
                // Devolver saldo: subtrair de bloqueado e adicionar em disponível
                atualizar_saldo_usuario($saque['usuario_id'], $saque['valor'], 'bloqueado', 'subtrair');
                atualizar_saldo_usuario($saque['usuario_id'], $saque['valor'], 'disponivel', 'adicionar');
                
                $_GET['sucesso'] = 'saque_reprovado';
                
            } elseif ($acao === 'pagar') {
                // Marcar como pago: subtrair de bloqueado
                $sql_update = "UPDATE saques SET status = 'pago', updated_at = NOW() WHERE id = :id";
                $stmt_update = $pdo->prepare($sql_update);
                $stmt_update->execute([':id' => $saque_id]);
                
                // Subtrair de bloqueado (já foi pago)
                atualizar_saldo_usuario($saque['usuario_id'], $saque['valor'], 'bloqueado', 'subtrair');
                
                $_GET['sucesso'] = 'saque_pago';
            }
            
            $pdo->commit();
        }
    } catch (PDOException $e) {
        if ($pdo->inTransaction()) {
            $pdo->rollBack();
        }
        error_log("Erro ao processar saque: " . $e->getMessage());
        $_GET['erro'] = 'erro_geral';
    }
}

// Atualizar observação
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['observacao'])) {
    $saque_id = intval($_POST['saque_id']);
    $observacao = trim($_POST['observacao']);
    
    try {
        $sql = "UPDATE saques SET observacao = :observacao, updated_at = NOW() WHERE id = :id";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([':observacao' => $observacao, ':id' => $saque_id]);
        $_GET['sucesso'] = 'observacao_atualizada';
    } catch (PDOException $e) {
        error_log("Erro ao atualizar observação: " . $e->getMessage());
    }
}

// Filtros
$filtro_status = isset($_GET['status']) ? $_GET['status'] : '';

// Buscar saques
$sql = "SELECT s.id, s.valor, s.status, s.forma_pagamento, s.chave_pagamento, s.observacao, s.created_at, s.updated_at,
               u.nome as usuario_nome, u.email as usuario_email
        FROM saques s
        INNER JOIN usuarios u ON u.id = s.usuario_id
        WHERE 1=1";

$params = [];

if (!empty($filtro_status)) {
    $sql .= " AND s.status = :status";
    $params[':status'] = $filtro_status;
}

$sql .= " ORDER BY s.created_at DESC";

$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$saques = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!-- Página incluída no dashboard/index.php - não precisa de tags HTML completas -->
<style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        :root {
            --bg-body: #f3f4f6;
            --bg-card: #ffffff;
            --text-primary: #333;
            --text-secondary: #666;
            --text-muted: #999;
            --border-color: #dee2e6;
        }
        
        [data-theme="dark"] {
            --bg-body: #020617;
            --bg-card: #0f172a;
            --text-primary: #ffffff;
            --text-secondary: #94a3b8;
            --text-muted: #64748b;
            --border-color: #334155;
        }
        
        body {
            font-family: 'Montserrat', sans-serif;
            background: var(--bg-body);
            color: var(--text-primary);
            padding: 20px;
        }

        .container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .page-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 30px;
            padding: 20px;
            background: var(--bg-card);
            border-radius: 15px;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
            border: 1px solid var(--border-color);
        }

        .page-header h1 {
            font-size: 32px;
            font-weight: 800;
            color: var(--text-primary);
        }

        .filters {
            display: flex;
            gap: 15px;
            margin-bottom: 20px;
            padding: 20px;
            background: var(--bg-card);
            border-radius: 15px;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
            border: 1px solid var(--border-color);
        }

        .filter-group {
            flex: 1;
        }

        .filter-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: 600;
            color: var(--text-primary);
        }

        .filter-group select {
            width: 100%;
            padding: 10px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            font-size: 14px;
            background: var(--bg-card);
            color: var(--text-primary);
        }

        .table-container {
            background: var(--bg-card);
            border-radius: 15px;
            overflow: hidden;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
            border: 1px solid var(--border-color);
        }

        table {
            width: 100%;
            border-collapse: collapse;
        }

        thead {
            background: var(--bg-body);
        }

        th {
            padding: 15px;
            text-align: left;
            font-weight: 600;
            color: var(--text-primary);
            border-bottom: 2px solid var(--border-color);
        }

        td {
            padding: 15px;
            border-bottom: 1px solid var(--border-color);
            color: var(--text-secondary);
        }

        tbody tr:hover {
            background: var(--bg-body);
        }

        .status {
            padding: 5px 10px;
            border-radius: 5px;
            font-size: 12px;
            font-weight: 600;
            display: inline-block;
        }

        .status-pendente {
            background: #fbbf24;
            color: #ffffff;
        }

        .status-aprovado {
            background: #4ade80;
            color: #ffffff;
        }

        .status-reprovado {
            background: #f87171;
            color: #ffffff;
        }

        .status-pago {
            background: #667eea;
            color: #ffffff;
        }

        .btn-action {
            padding: 5px 10px;
            border: none;
            border-radius: 5px;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
            margin-right: 5px;
            transition: all 0.3s;
        }

        .btn-approve {
            background: #4ade80;
            color: #ffffff;
        }

        .btn-reject {
            background: #f87171;
            color: #ffffff;
        }

        .btn-pay {
            background: #667eea;
            color: #ffffff;
        }

        .btn-action:hover {
            transform: translateY(-2px);
            box-shadow: 0 3px 10px rgba(0,0,0,0.2);
        }

        .alert {
            padding: 15px 20px;
            border-radius: 8px;
            margin-bottom: 20px;
            font-weight: 600;
        }

        .alert-success {
            background: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        [data-theme="dark"] .alert-success {
            background: rgba(16, 185, 129, 0.2);
            color: #34d399;
            border: 1px solid rgba(16, 185, 129, 0.3);
        }

        .alert-error {
            background: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        [data-theme="dark"] .alert-error {
            background: rgba(239, 68, 68, 0.2);
            color: #f87171;
            border: 1px solid rgba(239, 68, 68, 0.3);
        }

        .no-data {
            text-align: center;
            padding: 60px 20px;
            color: var(--text-muted);
        }
    </style>

<div class="container">
        <div class="page-header">
            <h1><i class="fas fa-money-bill-wave"></i> Gestão de Saques</h1>
        </div>

        <?php if (isset($_GET['sucesso'])): ?>
            <div class="alert alert-success">
                <?php
                switch ($_GET['sucesso']) {
                    case 'saque_aprovado':
                        echo '<i class="fas fa-check-circle"></i> Saque aprovado com sucesso!';
                        break;
                    case 'saque_reprovado':
                        echo '<i class="fas fa-check-circle"></i> Saque reprovado. Saldo devolvido ao usuário.';
                        break;
                    case 'saque_pago':
                        echo '<i class="fas fa-check-circle"></i> Saque marcado como pago!';
                        break;
                    case 'observacao_atualizada':
                        echo '<i class="fas fa-check-circle"></i> Observação atualizada!';
                        break;
                }
                ?>
            </div>
        <?php endif; ?>

        <?php if (isset($_GET['erro'])): ?>
            <div class="alert alert-error">
                <i class="fas fa-exclamation-triangle"></i> Erro ao processar ação. Tente novamente.
            </div>
        <?php endif; ?>

        <form method="GET" class="filters">
            <div class="filter-group">
                <label for="status">Filtrar por Status</label>
                <select name="status" id="status" onchange="this.form.submit()">
                    <option value="">Todos os status</option>
                    <option value="pendente" <?= $filtro_status === 'pendente' ? 'selected' : ''; ?>>Pendente</option>
                    <option value="aprovado" <?= $filtro_status === 'aprovado' ? 'selected' : ''; ?>>Aprovado</option>
                    <option value="reprovado" <?= $filtro_status === 'reprovado' ? 'selected' : ''; ?>>Reprovado</option>
                    <option value="pago" <?= $filtro_status === 'pago' ? 'selected' : ''; ?>>Pago</option>
                </select>
            </div>
        </form>

        <?php if (empty($saques)): ?>
            <div class="no-data">
                <i class="fas fa-inbox" style="font-size: 64px; margin-bottom: 20px; opacity: 0.5;"></i>
                <h2>Nenhum saque encontrado</h2>
            </div>
        <?php else: ?>
            <div class="table-container">
                <table>
                    <thead>
                        <tr>
                            <th>Data</th>
                            <th>Usuário</th>
                            <th>Valor</th>
                            <th>Forma</th>
                            <th>Chave</th>
                            <th>Status</th>
                            <th>Observação</th>
                            <th>Ações</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($saques as $saque): ?>
                        <tr>
                            <td><?= date('d/m/Y H:i', strtotime($saque['created_at'])); ?></td>
                            <td>
                                <strong><?= htmlspecialchars($saque['usuario_nome']); ?></strong><br>
                                <small style="color: var(--text-muted);"><?= htmlspecialchars($saque['usuario_email']); ?></small>
                            </td>
                            <td><strong style="color: #4ade80;">R$ <?= number_format(floatval($saque['valor']), 2, ',', '.'); ?></strong></td>
                            <td><?= htmlspecialchars($saque['forma_pagamento']); ?></td>
                            <td style="font-size: 12px; color: var(--text-muted);"><?= htmlspecialchars($saque['chave_pagamento']); ?></td>
                            <td>
                                <span class="status status-<?= strtolower($saque['status']); ?>">
                                    <?= ucfirst(htmlspecialchars($saque['status'])); ?>
                                </span>
                            </td>
                            <td>
                                <form method="POST" style="display: inline;">
                                    <input type="hidden" name="saque_id" value="<?= intval($saque['id']); ?>">
                                    <input type="text" name="observacao" value="<?= htmlspecialchars($saque['observacao'] ?? ''); ?>" 
                                           placeholder="Observação..." style="width: 200px; padding: 5px; border: 1px solid var(--border-color); border-radius: 5px; font-size: 12px; background: var(--bg-card); color: var(--text-primary);">
                                    <button type="submit" style="padding: 5px 10px; background: #667eea; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 12px;">
                                        <i class="fas fa-save"></i>
                                    </button>
                                </form>
                            </td>
                            <td>
                                <?php if ($saque['status'] === 'pendente'): ?>
                                    <form method="POST" style="display: inline;">
                                        <input type="hidden" name="saque_id" value="<?= intval($saque['id']); ?>">
                                        <input type="hidden" name="acao" value="aprovar">
                                        <button type="submit" class="btn-action btn-approve" onclick="return confirm('Aprovar este saque?');">
                                            <i class="fas fa-check"></i> Aprovar
                                        </button>
                                    </form>
                                    <form method="POST" style="display: inline;">
                                        <input type="hidden" name="saque_id" value="<?= intval($saque['id']); ?>">
                                        <input type="hidden" name="acao" value="reprovar">
                                        <button type="submit" class="btn-action btn-reject" onclick="return confirm('Reprovar este saque? O saldo será devolvido ao usuário.');">
                                            <i class="fas fa-times"></i> Reprovar
                                        </button>
                                    </form>
                                <?php elseif ($saque['status'] === 'aprovado'): ?>
                                    <form method="POST" style="display: inline;">
                                        <input type="hidden" name="saque_id" value="<?= intval($saque['id']); ?>">
                                        <input type="hidden" name="acao" value="pagar">
                                        <button type="submit" class="btn-action btn-pay" onclick="return confirm('Marcar este saque como pago?');">
                                            <i class="fas fa-check-double"></i> Marcar como Pago
                                        </button>
                                    </form>
                                <?php else: ?>
                                    <span style="color: var(--text-muted); font-size: 12px;">-</span>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        <?php endif; ?>
    </div>

