<?php
/**
 * Solicitar Saque - Área do Usuário
 * 
 * Formulário para solicitar saque
 */

// Proteção de autenticação (usuário comum apenas)
session_start();
require_once __DIR__ . '/../../backend/auth_helper.php';
requer_usuario('/dashboard/index.php');

// Conexão com o banco de dados
require __DIR__ . '/../../config/config_db.php';
require_once __DIR__ . '/../../backend/financeiro_helper.php';
require_once __DIR__ . '/../../backend/settings_helper.php';

// Obter dados do usuário logado
$usuario = usuario_logado();
$usuario_id = $usuario['id'];
$usuario_nome = $usuario['nome'] ?? 'Usuário';

// Obter saldo disponível
$saldo = obter_saldo_usuario($usuario_id);
$saldo_disponivel = floatval($saldo['saldo_disponivel'] ?? 0);

// Obter configurações financeiras
$saque_minimo = floatval(getSystemSetting('saque_minimo', 20.00));
$saque_maximo = floatval(getSystemSetting('saque_maximo', 5000.00));
$taxa_saque = floatval(getSystemSetting('taxa_saque', 0.00));

// Processar solicitação de saque
$sucesso = false;
$erro = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $valor = isset($_POST['valor']) ? floatval($_POST['valor']) : 0;
    $forma_pagamento = isset($_POST['forma_pagamento']) ? trim($_POST['forma_pagamento']) : 'PIX';
    $chave_pagamento = isset($_POST['chave_pagamento']) ? trim($_POST['chave_pagamento']) : '';
    
    // Calcular valor total necessário (valor solicitado + taxa)
    $valor_total_necessario = $valor + $taxa_saque;
    
    // Validações
    if ($valor <= 0) {
        $erro = 'O valor deve ser maior que zero.';
    } elseif ($valor < $saque_minimo) {
        $erro = 'O valor mínimo para saque é R$ ' . number_format($saque_minimo, 2, ',', '.') . '.';
    } elseif ($valor > $saque_maximo) {
        $erro = 'O valor máximo para saque é R$ ' . number_format($saque_maximo, 2, ',', '.') . '.';
    } elseif ($valor_total_necessario > $saldo_disponivel) {
        $erro = 'Saldo insuficiente. Será descontado R$ ' . number_format($valor, 2, ',', '.') . 
                ' (valor solicitado) + R$ ' . number_format($taxa_saque, 2, ',', '.') . 
                ' (taxa) = R$ ' . number_format($valor_total_necessario, 2, ',', '.') . 
                '. Seu saldo disponível é de R$ ' . number_format($saldo_disponivel, 2, ',', '.') . '.';
    } elseif (empty($chave_pagamento)) {
        $erro = 'A chave de pagamento é obrigatória.';
    } else {
        try {
            $pdo->beginTransaction();
            
            // Criar registro de saque
            $sql_saque = "INSERT INTO saques (usuario_id, valor, status, forma_pagamento, chave_pagamento, created_at, updated_at) 
                         VALUES (:usuario_id, :valor, 'pendente', :forma_pagamento, :chave_pagamento, NOW(), NOW())";
            $stmt_saque = $pdo->prepare($sql_saque);
            $stmt_saque->execute([
                ':usuario_id' => $usuario_id,
                ':valor' => $valor,
                ':forma_pagamento' => $forma_pagamento,
                ':chave_pagamento' => $chave_pagamento
            ]);
            
            // Atualizar saldo: subtrair valor total (valor solicitado + taxa) de disponível
            // e adicionar apenas o valor solicitado em bloqueado (taxa já foi descontada)
            atualizar_saldo_usuario($usuario_id, $valor_total_necessario, 'disponivel', 'subtrair');
            atualizar_saldo_usuario($usuario_id, $valor, 'bloqueado', 'adicionar');
            
            $pdo->commit();
            $sucesso = true;
            $_GET['sucesso'] = '1';
            
        } catch (PDOException $e) {
            $pdo->rollBack();
            error_log("Erro ao solicitar saque: " . $e->getMessage());
            $erro = 'Erro ao processar solicitação. Tente novamente.';
        }
    }
}
?>
<style>
    .saque-container {
        padding: 20px;
        max-width: 600px;
        margin: 0 auto;
    }

    .header {
        text-align: center;
        padding: 20px;
        margin-bottom: 30px;
    }

    .header h1 {
        font-size: 32px;
        font-weight: 800;
        margin-bottom: 10px;
        color: var(--text-main);
    }

    .header p {
        color: var(--text-muted);
        font-size: 16px;
    }

    .back-link {
        display: inline-block;
        margin-bottom: 20px;
        color: var(--primary-color, #667eea);
        text-decoration: none;
        font-weight: 600;
        padding: 10px 20px;
        background: var(--bg-card);
        border: 1px solid var(--border-color);
        border-radius: 8px;
        transition: all 0.3s;
    }

    .back-link:hover {
        background: var(--bg-card);
        transform: translateX(-5px);
        border-color: var(--primary-color, #667eea);
    }

    .form-container {
        background: var(--bg-card);
        border-radius: 15px;
        padding: 30px;
        border: 1px solid var(--border-color);
    }

    .saldo-info {
        background: var(--bg-body);
        padding: 20px;
        border-radius: 10px;
        margin-bottom: 30px;
        text-align: center;
        border: 1px solid var(--border-color);
    }

    .saldo-info h3 {
        font-size: 14px;
        color: var(--text-muted);
        margin-bottom: 10px;
    }

    .saldo-info .valor {
        font-size: 36px;
        font-weight: 800;
        color: var(--color_status_success, #4ade80);
    }

    .form-group {
        margin-bottom: 25px;
    }

    .form-group label {
        display: block;
        margin-bottom: 8px;
        font-weight: 600;
        color: var(--text-main);
    }

    .form-group input,
    .form-group select {
        width: 100%;
        padding: 12px 15px;
        border: 1px solid var(--border-color);
        border-radius: 8px;
        background: var(--bg-body);
        color: var(--text-main);
        font-size: 14px;
    }

    .form-group input:focus,
    .form-group select:focus {
        outline: none;
        border-color: var(--primary-color, #667eea);
        box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
    }

    .form-group input::placeholder {
        color: var(--text-muted);
    }

    .form-group small {
        display: block;
        margin-top: 5px;
        color: var(--text-muted);
        font-size: 12px;
    }

    .btn {
        width: 100%;
        padding: 15px;
        background: var(--primary-color, #667eea);
        color: #ffffff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.3s;
    }

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

    .btn:disabled {
        opacity: 0.5;
        cursor: not-allowed;
    }

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

    .alert-success {
        background: var(--color_message_success_bg, #d4edda);
        color: var(--color_message_success_text, #155724);
        border: 1px solid var(--border-color);
    }

    .alert-error {
        background: var(--color_message_error_bg, #f8d7da);
        color: var(--color_message_error_text, #721c24);
        border: 1px solid var(--border-color);
    }
</style>

<div class="saque-container">
    <a href="?page=financeiro" class="back-link">
        <i class="fas fa-arrow-left"></i> Voltar para Financeiro
    </a>

    <div class="header">
        <h1><i class="fas fa-money-bill-wave"></i> Solicitar Saque</h1>
        <p>Solicite o saque do seu saldo disponível</p>
    </div>

    <?php if (isset($_GET['sucesso']) && $_GET['sucesso'] == '1'): ?>
        <div class="alert alert-success">
            <i class="fas fa-check-circle"></i> Saque solicitado com sucesso! Aguarde a aprovação do administrador.
        </div>
    <?php endif; ?>

    <?php if (!empty($erro)): ?>
        <div class="alert alert-error">
            <i class="fas fa-exclamation-triangle"></i> <?= htmlspecialchars($erro); ?>
        </div>
    <?php endif; ?>

    <div class="form-container">
        <div class="saldo-info">
            <h3>Saldo Disponível</h3>
            <div class="valor">R$ <?= number_format($saldo_disponivel, 2, ',', '.'); ?></div>
        </div>

        <?php if ($taxa_saque > 0): ?>
        <div style="background: #fff3cd; border: 1px solid #ffc107; border-radius: 8px; padding: 15px; margin-bottom: 20px;">
            <strong style="color: #856404;"><i class="fas fa-info-circle"></i> Informação sobre Taxa</strong>
            <p style="color: #856404; margin: 8px 0 0 0; font-size: 14px;">
                Será descontada uma taxa de <strong>R$ <?= number_format($taxa_saque, 2, ',', '.'); ?></strong> do seu saldo além do valor solicitado.
            </p>
        </div>
        <?php endif; ?>
        
        <form method="POST">
            <div class="form-group">
                <label for="valor"><i class="fas fa-dollar-sign"></i> Valor do Saque (R$)</label>
                <input type="number" id="valor" name="valor" step="0.01" 
                       min="<?= $saque_minimo; ?>" 
                       max="<?= min($saque_maximo, $saldo_disponivel - $taxa_saque); ?>" 
                       placeholder="0.00" required>
                <small>
                    Mínimo: R$ <?= number_format($saque_minimo, 2, ',', '.'); ?> | 
                    Máximo: R$ <?= number_format($saque_maximo, 2, ',', '.'); ?>
                    <?php if ($taxa_saque > 0): ?>
                    <br>Taxa de saque: R$ <?= number_format($taxa_saque, 2, ',', '.'); ?> (será descontada além do valor solicitado)
                    <?php endif; ?>
                </small>
            </div>

            <div class="form-group">
                <label for="forma_pagamento"><i class="fas fa-credit-card"></i> Forma de Pagamento</label>
                <select id="forma_pagamento" name="forma_pagamento" required>
                    <option value="PIX" selected>PIX</option>
                    <option value="TED">TED</option>
                    <option value="DOC">DOC</option>
                </select>
            </div>

            <div class="form-group">
                <label for="chave_pagamento"><i class="fas fa-key"></i> Chave PIX / Conta</label>
                <input type="text" id="chave_pagamento" name="chave_pagamento" 
                       placeholder="CPF, Email, Telefone ou Chave Aleatória" required>
                <small>Informe a chave PIX ou dados da conta bancária</small>
            </div>

            <button type="submit" class="btn" <?= $saldo_disponivel <= 0 ? 'disabled' : ''; ?>>
                <i class="fas fa-paper-plane"></i> Solicitar Saque
            </button>
        </form>
    </div>
</div>
