<?php
/**
 * Configurações do Admin
 * 
 * Permite ao admin alterar senha e foto de perfil
 */

require_once __DIR__ . '/../../config/config_db.php';
require_once __DIR__ . '/../../backend/auth_helper.php';
require_once __DIR__ . '/../../backend/settings_helper.php';

$usuario_id = get_usuario_id();
$mensagem = '';
$tipo_mensagem = '';

// Processar upload de foto de perfil
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao']) && $_POST['acao'] === 'upload_foto') {
    if (isset($_FILES['foto_perfil']) && $_FILES['foto_perfil']['error'] === UPLOAD_ERR_OK) {
        $upload_dir = __DIR__ . '/../../public/uploads/perfis/';
        if (!is_dir($upload_dir)) {
            mkdir($upload_dir, 0755, true);
        }
        
        $file_extension = strtolower(pathinfo($_FILES['foto_perfil']['name'], PATHINFO_EXTENSION));
        $allowed_extensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
        
        if (in_array($file_extension, $allowed_extensions)) {
            $new_filename = 'perfil_' . $usuario_id . '_' . time() . '.' . $file_extension;
            $upload_path = $upload_dir . $new_filename;
            
            if (move_uploaded_file($_FILES['foto_perfil']['tmp_name'], $upload_path)) {
                // Salvar caminho relativo ao root do projeto
                $foto_url = 'public/uploads/perfis/' . $new_filename;
                
                try {
                    $stmt = $pdo->prepare("UPDATE usuarios SET foto_perfil = ? WHERE id = ?");
                    $stmt->execute([$foto_url, $usuario_id]);
                    $mensagem = "Foto de perfil atualizada com sucesso!";
                    $tipo_mensagem = 'success';
                } catch (PDOException $e) {
                    error_log("Erro ao salvar foto: " . $e->getMessage());
                    $mensagem = "Erro ao salvar foto. Tente novamente.";
                    $tipo_mensagem = 'error';
                }
            } else {
                $mensagem = "Erro ao fazer upload da imagem.";
                $tipo_mensagem = 'error';
            }
        } else {
            $mensagem = "Formato de arquivo não permitido. Use JPG, PNG, GIF ou WEBP.";
            $tipo_mensagem = 'error';
        }
    } else {
        $mensagem = "Nenhuma imagem foi enviada.";
        $tipo_mensagem = 'error';
    }
}

// Processar alteração de senha
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao']) && $_POST['acao'] === 'mudar_senha') {
    $senha_atual = trim($_POST['senha_atual'] ?? '');
    $nova_senha = trim($_POST['nova_senha'] ?? '');
    $confirmar_senha = trim($_POST['confirmar_senha'] ?? '');
    
    if (empty($senha_atual)) {
        $mensagem = "Digite sua senha atual.";
        $tipo_mensagem = 'error';
    } elseif (strlen($nova_senha) < 6) {
        $mensagem = "A nova senha deve ter pelo menos 6 caracteres.";
        $tipo_mensagem = 'error';
    } elseif ($nova_senha !== $confirmar_senha) {
        $mensagem = "As senhas não coincidem.";
        $tipo_mensagem = 'error';
    } else {
        try {
            // Verificar senha atual
            $stmt = $pdo->prepare("SELECT senha_hash FROM usuarios WHERE id = ? LIMIT 1");
            $stmt->execute([$usuario_id]);
            $usuario = $stmt->fetch(PDO::FETCH_ASSOC);
            
            if ($usuario && password_verify($senha_atual, $usuario['senha_hash'])) {
                // Atualizar senha
                $nova_senha_hash = password_hash($nova_senha, PASSWORD_DEFAULT);
                $stmt_update = $pdo->prepare("UPDATE usuarios SET senha_hash = ?, updated_at = NOW() WHERE id = ?");
                $stmt_update->execute([$nova_senha_hash, $usuario_id]);
                
                $mensagem = "Senha alterada com sucesso!";
                $tipo_mensagem = 'success';
            } else {
                $mensagem = "Senha atual incorreta.";
                $tipo_mensagem = 'error';
            }
        } catch (PDOException $e) {
            error_log("Erro ao alterar senha: " . $e->getMessage());
            $mensagem = "Erro ao alterar senha. Tente novamente.";
            $tipo_mensagem = 'error';
        }
    }
}

// Processar salvamento de configurações financeiras
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao']) && $_POST['acao'] === 'salvar_config_financeiro') {
    try {
        // Verificar se é admin
        if (!eh_admin()) {
            $mensagem = "Apenas administradores podem alterar configurações financeiras.";
            $tipo_mensagem = 'error';
        } else {
            // Salvar cada configuração
            $configs = [
                'taxa_plataforma_venda_tipo' => trim($_POST['taxa_venda_tipo'] ?? 'percentual'),
                'taxa_plataforma_venda_valor' => floatval($_POST['taxa_venda_valor'] ?? 0),
                'taxa_saque' => floatval($_POST['taxa_saque'] ?? 0),
                'prazo_liberacao_dias' => intval($_POST['prazo_liberacao'] ?? 30),
                'saque_minimo' => floatval($_POST['saque_minimo'] ?? 20),
                'saque_maximo' => floatval($_POST['saque_maximo'] ?? 5000)
            ];
            
            $sucesso = true;
            foreach ($configs as $key => $value) {
                $tipo = in_array($key, ['taxa_plataforma_venda_tipo']) ? 'text' : 'number';
                if (!setSystemSetting($key, $value, $tipo)) {
                    $sucesso = false;
                    break;
                }
            }
            
            if ($sucesso) {
                $mensagem = "Configurações financeiras salvas com sucesso!";
                $tipo_mensagem = 'success';
            } else {
                $mensagem = "Erro ao salvar algumas configurações. Tente novamente.";
                $tipo_mensagem = 'error';
            }
        }
    } catch (Exception $e) {
        error_log("Erro ao salvar configurações financeiras: " . $e->getMessage());
        $mensagem = "Erro ao salvar configurações. Tente novamente.";
        $tipo_mensagem = 'error';
    }
}

// Buscar dados do usuário
try {
    $stmt = $pdo->prepare("SELECT nome, email, whatsapp, tipo, status, foto_perfil, created_at FROM usuarios WHERE id = ? LIMIT 1");
    $stmt->execute([$usuario_id]);
    $usuario = $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    error_log("Erro ao buscar dados do usuário: " . $e->getMessage());
    $usuario = null;
}
?>

<style>
    .config-container {
        max-width: 800px;
        margin: 0 auto;
    }
    
    .config-header {
        margin-bottom: 30px;
    }
    
    .config-header h2 {
        font-size: 28px;
        font-weight: 700;
        color: var(--text-main);
        margin-bottom: 10px;
    }
    
    .config-header p {
        color: var(--text-muted);
        font-size: 14px;
    }
    
    .card {
        background: var(--bg-card);
        border: 1px solid var(--border-color);
        border-radius: 8px;
        padding: 30px;
        margin-bottom: 20px;
        box-shadow: var(--shadow-soft);
    }
    
    .card h3 {
        font-size: 20px;
        font-weight: 700;
        color: var(--text-main);
        margin-bottom: 20px;
    }
    
    .mensagem {
        padding: 15px 20px;
        border-radius: 8px;
        margin-bottom: 20px;
        font-weight: 600;
        display: flex;
        align-items: center;
        gap: 10px;
    }
    
    .mensagem.success {
        background: #d1fae5;
        color: #065f46;
        border: 1px solid #10b981;
    }
    
    .mensagem.error {
        background: #fee2e2;
        color: #991b1b;
        border: 1px solid #ef4444;
    }
</style>

<div class="config-container">
    <div class="config-header">
        <h2><i class="fas fa-cog"></i> Configurações</h2>
        <p>Gerencie suas informações pessoais e segurança da conta</p>
    </div>
    
    <?php if ($mensagem): ?>
        <div class="mensagem <?= $tipo_mensagem ?>">
            <i class="fas fa-<?= $tipo_mensagem === 'success' ? 'check-circle' : 'exclamation-circle' ?>"></i>
            <?= htmlspecialchars($mensagem) ?>
        </div>
    <?php endif; ?>
    
    <!-- Foto de Perfil -->
    <div class="card">
        <h3><i class="fas fa-user-circle"></i> Foto de Perfil</h3>
        <form method="POST" enctype="multipart/form-data" style="margin-top: 20px;">
            <input type="hidden" name="acao" value="upload_foto">
            
            <div style="display: flex; align-items: center; gap: 20px; margin-bottom: 20px;">
                <div style="width: 100px; height: 100px; border-radius: 50%; overflow: hidden; border: 3px solid var(--border-color); background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); display: flex; align-items: center; justify-content: center; color: white; font-size: 40px; font-weight: 600; flex-shrink: 0;">
                    <?php if (!empty($usuario['foto_perfil'])): ?>
                        <?php 
                        // Ajustar caminho da imagem se necessário
                        $foto_path = $usuario['foto_perfil'];
                        if (strpos($foto_path, 'public/') === 0) {
                            $foto_path = '/' . $foto_path;
                        } elseif (strpos($foto_path, '/') !== 0) {
                            $foto_path = '/' . $foto_path;
                        }
                        ?>
                        <img src="<?= htmlspecialchars($foto_path) ?>" alt="Foto de Perfil" style="width: 100%; height: 100%; object-fit: cover;" onerror="this.style.display='none'; this.parentElement.innerHTML='<?= strtoupper(substr($usuario['nome'], 0, 1)) ?>'">
                    <?php else: ?>
                        <?= strtoupper(substr($usuario['nome'], 0, 1)) ?>
                    <?php endif; ?>
                </div>
                
                <div style="flex: 1;">
                    <label style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                        Escolher Nova Foto
                    </label>
                    <input type="file" name="foto_perfil" accept="image/jpeg,image/jpg,image/png,image/gif,image/webp" style="margin-bottom: 12px; padding: 8px; border: 1px solid var(--border-color); border-radius: 6px; width: 100%;">
                    <button type="submit" class="btn-primary" style="padding: 10px 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                        <i class="fas fa-upload"></i> Enviar Foto
                    </button>
                    <p style="color: var(--text-muted); font-size: 12px; margin-top: 8px;">
                        Formatos aceitos: JPG, PNG, GIF, WEBP (máx. 5MB)
                    </p>
                </div>
            </div>
        </form>
    </div>
    
    <!-- Alterar Senha -->
    <div class="card">
        <h3><i class="fas fa-key"></i> Alterar Senha</h3>
        <form method="POST">
            <input type="hidden" name="acao" value="mudar_senha">
            
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="senha_atual" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">Senha Atual</label>
                <input type="password" id="senha_atual" name="senha_atual" required 
                       placeholder="Digite sua senha atual" autocomplete="current-password"
                       style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
            </div>
            
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="nova_senha" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">Nova Senha</label>
                <input type="password" id="nova_senha" name="nova_senha" required minlength="6"
                       placeholder="Mínimo 6 caracteres" autocomplete="new-password"
                       style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
            </div>
            
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="confirmar_senha" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">Confirmar Nova Senha</label>
                <input type="password" id="confirmar_senha" name="confirmar_senha" required minlength="6"
                       placeholder="Digite a senha novamente" autocomplete="new-password"
                       style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
            </div>
            
            <button type="submit" class="btn-primary" style="padding: 12px 24px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                <i class="fas fa-key"></i> Alterar Senha
            </button>
        </form>
    </div>
    
    <?php if (eh_admin()): ?>
    <!-- Configurações Financeiras -->
    <div class="card">
        <h3><i class="fas fa-money-bill-wave"></i> Configurações Financeiras</h3>
        <p style="color: var(--text-muted); font-size: 14px; margin-bottom: 20px;">
            Configure as taxas e limites do sistema financeiro
        </p>
        
        <form method="POST">
            <input type="hidden" name="acao" value="salvar_config_financeiro">
            
            <!-- Taxa por Venda -->
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="taxa_venda_tipo" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                    Tipo de Taxa por Venda
                </label>
                <select id="taxa_venda_tipo" name="taxa_venda_tipo" required
                        style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
                    <option value="percentual" <?= getSystemSetting('taxa_plataforma_venda_tipo', 'percentual') === 'percentual' ? 'selected' : '' ?>>Percentual (%)</option>
                    <option value="fixo" <?= getSystemSetting('taxa_plataforma_venda_tipo', 'percentual') === 'fixo' ? 'selected' : '' ?>>Valor Fixo (R$)</option>
                </select>
                <small style="color: var(--text-muted); font-size: 12px; display: block; margin-top: 5px;">
                    Selecione se a taxa será percentual sobre o valor da venda ou um valor fixo
                </small>
            </div>
            
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="taxa_venda_valor" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                    Valor da Taxa por Venda
                </label>
                <input type="number" id="taxa_venda_valor" name="taxa_venda_valor" 
                       step="0.01" min="0" required
                       value="<?= htmlspecialchars(getSystemSetting('taxa_plataforma_venda_valor', '0')) ?>"
                       placeholder="0.00"
                       style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
                <small style="color: var(--text-muted); font-size: 12px; display: block; margin-top: 5px;">
                    Se percentual: digite 5 para 5%. Se fixo: digite 1.00 para R$ 1,00
                </small>
            </div>
            
            <!-- Taxa de Saque -->
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="taxa_saque" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                    Taxa por Saque (R$)
                </label>
                <input type="number" id="taxa_saque" name="taxa_saque" 
                       step="0.01" min="0" required
                       value="<?= htmlspecialchars(getSystemSetting('taxa_saque', '0.00')) ?>"
                       placeholder="0.00"
                       style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
                <small style="color: var(--text-muted); font-size: 12px; display: block; margin-top: 5px;">
                    Taxa fixa cobrada em cada solicitação de saque (ex: 3.00 = R$ 3,00)
                </small>
            </div>
            
            <!-- Prazo de Liberação -->
            <div class="form-group" style="margin-bottom: 20px;">
                <label for="prazo_liberacao" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                    Prazo de Liberação de Saldo (dias)
                </label>
                <input type="number" id="prazo_liberacao" name="prazo_liberacao" 
                       min="1" required
                       value="<?= htmlspecialchars(getSystemSetting('prazo_liberacao_dias', '30')) ?>"
                       placeholder="30"
                       style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
                <small style="color: var(--text-muted); font-size: 12px; display: block; margin-top: 5px;">
                    Número de dias para que o saldo pendente seja liberado para saque
                </small>
            </div>
            
            <!-- Limites de Saque -->
            <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px;">
                <div class="form-group">
                    <label for="saque_minimo" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                        Valor Mínimo de Saque (R$)
                    </label>
                    <input type="number" id="saque_minimo" name="saque_minimo" 
                           step="0.01" min="0" required
                           value="<?= htmlspecialchars(getSystemSetting('saque_minimo', '20.00')) ?>"
                           placeholder="20.00"
                           style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
                </div>
                
                <div class="form-group">
                    <label for="saque_maximo" style="display: block; margin-bottom: 8px; font-weight: 600; color: var(--text-main);">
                        Valor Máximo de Saque (R$)
                    </label>
                    <input type="number" id="saque_maximo" name="saque_maximo" 
                           step="0.01" min="0" required
                           value="<?= htmlspecialchars(getSystemSetting('saque_maximo', '5000.00')) ?>"
                           placeholder="5000.00"
                           style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--bg-body); color: var(--text-main);">
                </div>
            </div>
            
            <button type="submit" class="btn-primary" style="padding: 12px 24px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;">
                <i class="fas fa-save"></i> Salvar Configurações Financeiras
            </button>
        </form>
    </div>
    <?php endif; ?>
</div>

