<?php
/**
 * Configurações do Usuário
 * 
 * Permite ao usuário alterar sua própria senha
 */

require_once __DIR__ . '/../../config/config_db.php';
require_once __DIR__ . '/../../backend/auth_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';
        }
    }
}

// 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;
        display: flex;
        align-items: center;
        gap: 10px;
    }
    
    .card h3 i {
        color: #667eea;
    }
    
    .info-item {
        display: flex;
        justify-content: space-between;
        padding: 15px 0;
        border-bottom: 1px solid var(--border-color);
    }
    
    .info-item:last-child {
        border-bottom: none;
    }
    
    .info-label {
        font-weight: 600;
        color: var(--text-muted);
    }
    
    .info-value {
        color: var(--text-main);
    }
    
    .form-group {
        margin-bottom: 20px;
    }
    
    .form-group label {
        display: block;
        margin-bottom: 8px;
        font-weight: 600;
        color: var(--text-main);
    }
    
    .form-group input {
        width: 100%;
        padding: 12px;
        border: 1px solid var(--border-color);
        border-radius: 6px;
        background: var(--bg-body);
        color: var(--text-main);
        font-size: 14px;
    }
    
    .form-group input:focus {
        outline: none;
        border-color: #667eea;
        box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
    }
    
    .btn {
        padding: 12px 24px;
        border: none;
        border-radius: 6px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        font-size: 14px;
    }
    
    .btn-primary {
        background: #667eea;
        color: white;
    }
    
    .btn-primary:hover {
        background: #5568d3;
        transform: translateY(-1px);
        box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
    }
    
    .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>
    
    <!-- Informações da Conta -->
    <div class="card">
        <h3><i class="fas fa-user"></i> Informações da Conta</h3>
        <?php if ($usuario): ?>
            <div class="info-item">
                <span class="info-label">Nome:</span>
                <span class="info-value"><?= htmlspecialchars($usuario['nome']) ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Email:</span>
                <span class="info-value"><?= htmlspecialchars($usuario['email']) ?></span>
            </div>
            <?php if (!empty($usuario['whatsapp'])): ?>
                <div class="info-item">
                    <span class="info-label">WhatsApp:</span>
                    <span class="info-value"><?= htmlspecialchars($usuario['whatsapp']) ?></span>
                </div>
            <?php endif; ?>
            <div class="info-item">
                <span class="info-label">Tipo:</span>
                <span class="info-value"><?= $usuario['tipo'] === 'admin' ? 'Administrador' : 'Usuário' ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Status:</span>
                <span class="info-value"><?= ucfirst($usuario['status']) ?></span>
            </div>
            <div class="info-item">
                <span class="info-label">Membro desde:</span>
                <span class="info-value"><?= date('d/m/Y', strtotime($usuario['created_at'])) ?></span>
            </div>
        <?php else: ?>
            <p style="color: var(--text-muted);">Erro ao carregar informações.</p>
        <?php endif; ?>
    </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">
                <label for="senha_atual">Senha Atual</label>
                <input type="password" id="senha_atual" name="senha_atual" required 
                       placeholder="Digite sua senha atual" autocomplete="current-password">
            </div>
            
            <div class="form-group">
                <label for="nova_senha">Nova Senha</label>
                <input type="password" id="nova_senha" name="nova_senha" required minlength="6"
                       placeholder="Mínimo 6 caracteres" autocomplete="new-password">
            </div>
            
            <div class="form-group">
                <label for="confirmar_senha">Confirmar Nova Senha</label>
                <input type="password" id="confirmar_senha" name="confirmar_senha" required minlength="6"
                       placeholder="Digite a nova senha novamente" autocomplete="new-password">
            </div>
            
            <button type="submit" class="btn btn-primary">
                <i class="fas fa-save"></i> Alterar Senha
            </button>
        </form>
    </div>
</div>

<script>
    // Validação de confirmação de senha
    document.getElementById('confirmar_senha')?.addEventListener('input', function() {
        const novaSenha = document.getElementById('nova_senha').value;
        const confirmarSenha = this.value;
        
        if (novaSenha !== confirmarSenha && confirmarSenha.length > 0) {
            this.setCustomValidity('As senhas não coincidem');
        } else {
            this.setCustomValidity('');
        }
    });
</script>


