<?php
/**
 * ============================================================
 * Impersonate - Super Admin acessando como Tenant
 * ============================================================
 */

session_start();
require_once __DIR__ . '/../includes/config.php';

// Verificar se é Super Admin
// TODO: Implementar autenticação real
$isSuperAdmin = true;

if (!$isSuperAdmin) {
    header('Location: /superadmin/login.php');
    exit;
}

$storeId = isset($_GET['store_id']) ? (int)$_GET['store_id'] : 0;

if (!$storeId) {
    header('Location: /superadmin/');
    exit;
}

try {
    $db = getDB();
    
    // Buscar a loja
    $stmt = $db->prepare("SELECT * FROM stores WHERE id = ? AND deleted_at IS NULL");
    $stmt->execute([$storeId]);
    $store = $stmt->fetch();
    
    if (!$store) {
        $_SESSION['error'] = 'Loja não encontrada';
        header('Location: /superadmin/');
        exit;
    }
    
    // Registrar a impersonation no log
    $stmt = $db->prepare("
        INSERT INTO impersonation_sessions 
        (super_admin_id, store_id, token, expires_at, ip_address, user_agent, created_at)
        VALUES (?, ?, ?, DATE_ADD(NOW(), INTERVAL 2 HOUR), ?, ?, NOW())
    ");
    
    $token = bin2hex(random_bytes(32));
    $stmt->execute([
        1, // Super Admin ID (fixo por enquanto)
        $storeId,
        $token,
        $_SERVER['REMOTE_ADDR'] ?? null,
        $_SERVER['HTTP_USER_AGENT'] ?? null
    ]);
    
    // Criar sessão de impersonation
    $_SESSION['impersonation'] = [
        'active' => true,
        'super_admin_id' => 1,
        'store_id' => $storeId,
        'store_name' => $store['name'],
        'token' => $token,
        'started_at' => time()
    ];
    
    // Setar o tenant na sessão
    $_SESSION['tenant_id'] = $storeId;
    $_SESSION['tenant_slug'] = $store['slug'];
    $_SESSION['tenant_type'] = $store['type'];
    
    // Redirecionar para o dashboard do tenant
    header('Location: /');
    exit;
    
} catch (Exception $e) {
    $_SESSION['error'] = 'Erro ao acessar loja: ' . $e->getMessage();
    header('Location: /superadmin/');
    exit;
}
