<?php
require_once(__DIR__ . '/../app/config/db.php');
session_set_cookie_params([
    'lifetime' => 0,
    'path'     => '/',
    'secure'   => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off',
    'httponly'  => true,
    'samesite' => 'Lax'
]);
session_start();

// Calcular path base da aplicação dinamicamente
$scriptPath = dirname($_SERVER['SCRIPT_NAME']);
$basePath = rtrim($scriptPath, '/');

// 🔒 Garante que o usuário esteja logado
if (!isset($_SESSION['usuario']['id'])) {
    header('Location: login.php');
    exit;
}

$usuarioId = $_SESSION['usuario']['id'];

// ✅ Se o usuário escolheu uma nova empresa
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['empresa_id'])) {

    $empresaAnterior = (int)($_SESSION['cdempresa'] ?? 0);
    $empresaNova = (int)$_POST['empresa_id'];

    // 🔹 Atualiza sessão da empresa (padrão multiempresa)
    $_SESSION['empresa'] = [
        'id'   => $empresaNova,
        'nome' => $_POST['empresa_nome']
    ];
    $_SESSION['cdempresa'] = $empresaNova;        // 👈 compatível com os módulos atuais
    $_SESSION['empresa_nome'] = $_POST['empresa_nome'] ?? '';   // 👈 útil para exibição no topo

    // ✅ Ao trocar de empresa, resetar filtros do dashboard para o padrão
    // (evita carregar cdempresa[] / país / centro / trimestre / moeda da empresa anterior)
    if ($empresaNova !== $empresaAnterior) {
        $_SESSION['filtros_dashboard'] = [];
        // Resetar visão do dashboard para a visão padrão do usuário
        if (!empty($_SESSION['visao_padrao'])) {
            $_SESSION['dashboard_visao'] = $_SESSION['visao_padrao'];
        } else {
            unset($_SESSION['dashboard_visao']);
        }
        unset($_SESSION['dashboard_visao_explicit']);
    }

    session_write_close();

    header('Location: index.php');
    exit;
}

$stmt = $pdo->prepare("
    SELECT e.cdempresa, e.dsempresa
      FROM back.pessoaempresa pe
      JOIN back.empresa e ON e.cdempresa = pe.cdempresa
     WHERE pe.cdpessoa = :pessoa
  ORDER BY e.dsempresa
");
$stmt->execute([':pessoa' => $usuarioId]);
$empresas = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 🔍 Busca empresas vinculadas ao usuário (com cache de sessão)
if (!empty($_SESSION['empresas_usuario']) && is_array($_SESSION['empresas_usuario'])) {
        $empresas = $_SESSION['empresas_usuario'];
} else {
        $stmt = $pdo->prepare("
                SELECT e.cdempresa, e.dsempresa
                    FROM back.pessoaempresa pe
                    JOIN back.empresa e ON e.cdempresa = pe.cdempresa
                 WHERE pe.cdpessoa = :pessoa
            ORDER BY e.dsempresa
        ");
        $stmt->execute([':pessoa' => $usuarioId]);
        $empresas = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $_SESSION['empresas_usuario'] = $empresas; // cache leve
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Trocar Empresa • Helm</title>
<link rel="icon" href="<?php echo $basePath; ?>/img/favicon.ico" type="image/x-icon">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
<style>
:root {
    --primary: #2563eb;
    --primary-dark: #1e40af;
    --secondary: #64748b;
    --success: #10b981;
    --danger: #ef4444;
    --warning: #f59e0b;
    --bg-primary: #f8fafc;
    --bg-secondary: #ffffff;
    --text-primary: #1e293b;
    --text-secondary: #64748b;
    --border: #e2e8f0;
}

/* Loader global */
.global-loader {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.12);
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 3000;
}
.global-loader .loader-box {
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 18px 22px;
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--text-primary);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.global-loader img {
    width: 44px;
    height: 44px;
    filter: drop-shadow(0 0 8px rgba(0,0,0,0.2)) contrast(1.1);
}
.global-loader .spinner-border {
    width: 1.9rem;
    height: 1.9rem;
    border-width: 0.18rem;
    color: var(--primary);
}

body {
    background-color: var(--bg-primary);
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: '-apple-system', 'Segoe UI', 'Arial', sans-serif;
    color: var(--text-primary);
    padding: clamp(12px, 4vw, 18px);
}

.layout-auth {
    width: 100%;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.card-troca {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border);
    border-radius: 12px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    padding: 2.25rem 1.75rem;
    width: 100%;
    max-width: 430px;
    min-width: 300px;
    text-align: center;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(-5px); }
    to { opacity: 1; transform: translateY(0); }
}

.logo {
    margin-bottom: 1.5rem;
    text-align: center;
}

.logo img {
    width: 100px;
    user-select: none;
    filter: drop-shadow(0 0 8px rgba(0,0,0,0.2)) contrast(1.1);
}

h4 {
    font-weight: 700;
    margin-bottom: 1.5rem;
    color: var(--text-primary);
    font-size: 1.5rem;
}

footer {
    margin-top: 1.25rem;
    font-size: 0.85rem;
    color: var(--text-secondary);
    text-align: center;
}

.modal-content {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
    border-radius: 12px;
    border: 1px solid var(--border);
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.08);
}

.modal-header {
    border-bottom: 1px solid var(--border);
    background-color: transparent;
    justify-content: center;
    flex-direction: column;
    padding: 1.25rem 1.25rem 1rem;
    text-align: center;
}

.modal-header img {
    width: 56px;
    margin-bottom: 6px;
    filter: drop-shadow(0 0 8px rgba(0,0,0,0.2)) contrast(1.1);
}

.modal-title {
    color: var(--text-primary);
    font-size: 1rem;
    font-weight: 600;
}

.modal-body {
    padding: 1.25rem;
}

.empresa-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    max-height: 450px;
    overflow-y: auto;
}

.empresa-list::-webkit-scrollbar {
    width: 6px;
}

.empresa-list::-webkit-scrollbar-track {
    background: transparent;
}

.empresa-list::-webkit-scrollbar-thumb {
    background: var(--border);
    border-radius: 3px;
}

.empresa-list::-webkit-scrollbar-thumb:hover {
    background: var(--secondary);
}

.empresa-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 12px 16px;
    background: var(--bg-primary);
    border: 1px solid var(--border);
    color: var(--primary);
    text-decoration: none;
    border-radius: 6px;
    font-weight: 600;
    font-size: 0.95rem;
    transition: all 0.2s;
    cursor: pointer;
    text-align: center;
    word-break: break-word;
    width: 100%;
    outline: none;
    user-select: none;
}

.empresa-btn:hover {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.15);
}

.empresa-btn:active {
    transform: translateY(0);
}

@media (max-width: 576px) {
    body {
        padding: 0;
    }
    .layout-auth {
        align-items: flex-start;
        padding: 12px;
        padding-top: calc(env(safe-area-inset-top, 0px) + 12px);
        padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 12px);
    }
    .card-troca {
        padding: 1.7rem 1.25rem;
        border-radius: 12px;
        width: 100%;
        max-width: 480px;
    }
    .logo img {
        width: 100px;
    }
    h4 {
        font-size: 1.25rem;
    }
    .modal-dialog {
        margin: 0;
        max-width: 100%;
        width: 100%;
        padding: 0.75rem;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .modal-content {
        max-height: 92vh;
        border-radius: 12px;
        width: 100%;
    }
    .empresa-list {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
        max-height: 60vh;
    }
    .empresa-btn {
        min-height: 48px;
        font-size: 1.08rem;
    }
}
</style>
</head>
<body>
<div id="globalLoader" class="global-loader d-none">
    <div class="loader-box">
        <img src="<?php echo $basePath; ?>/img/helm-icon.png" alt="Carregando">
        <div class="spinner-border" role="status" aria-hidden="true"></div>
        <span>Carregando...</span>
    </div>
</div>
<div class="layout-auth">
<div class="card-troca" id="trocaCard">
    <div class="logo">
        <img src="<?php echo $basePath; ?>/img/helm-icon.png" alt="Helm Logo">
    </div>
    <h4>Selecione a Empresa</h4>

    <?php if (!($empresas && count($empresas) > 0)): ?>
        <p>Nenhuma empresa vinculada ao usuário.</p>
    <?php endif; ?>

    <footer>© <?= date('Y') ?> Grupo Capitão</footer>
</div>
</div>

<!-- Modal de Seleção de Empresa -->
<div class="modal fade" id="empresaModal" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered">
    <div class="modal-content">
      <div class="modal-header">
        <img src="<?php echo $basePath; ?>/img/helm-icon.png" alt="Helm Logo">
        <h5 class="modal-title">Selecione a empresa</h5>
      </div>
      <div class="modal-body">
        <div class="empresa-list" id="listaEmpresas"></div>
      </div>
    </div>
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
    const empresas = <?= json_encode($empresas, JSON_UNESCAPED_UNICODE) ?>;
    const lista = document.getElementById('listaEmpresas');
    const modal = new bootstrap.Modal(document.getElementById('empresaModal'));
    const loader = document.getElementById('globalLoader');
    const showLoader = () => loader && loader.classList.remove('d-none');
    const hideLoader = () => loader && loader.classList.add('d-none');

    window.addEventListener('beforeunload', () => {
        showLoader();
    });

    // Preenche a lista de empresas
    if (empresas && empresas.length > 0) {
        empresas.forEach(emp => {
            const btn = document.createElement('button');
            btn.className = 'empresa-btn';
            btn.textContent = emp.dsempresa;
            btn.onclick = async (e) => {
                e.preventDefault();
                showLoader();
                const form = document.createElement('form');
                form.method = 'POST';
                form.innerHTML = `
                    <input type="hidden" name="empresa_id" value="${emp.cdempresa}">
                    <input type="hidden" name="empresa_nome" value="${emp.dsempresa}">
                `;
                document.body.appendChild(form);
                form.submit();
            };
            lista.appendChild(btn);
        });
        // Mostra o modal após carregar
        hideLoader();
        modal.show();
    } else {
        hideLoader();
    }
});
</script>
</body>
</html>
