<?php
// admin/index.php
declare(strict_types=1);
ob_start();

// Ladda DB + helpers tidigt (PDO behövs i denna fil)
require_once __DIR__ . '/db.php';
require_once __DIR__ . '/functions.php';
require_once __DIR__ . '/lib/auth_redirect.php';
require_once __DIR__ . '/lib/user_support.php';
require_once __DIR__ . '/lib/two_factor.php';
require_once __DIR__ . '/../shared/lib/maintenance.php';

// ⛔ inloggningskrav
if (!currentUser()) {
  header('Location: ' . admin_login_url('', admin_return_url_for_request()));
  exit;
}

if (!empty($_SESSION['must_change_password'])) {
  header('Location: force_password_change.php');
  exit;
}

two_factor_enforce($pdo);

auth_support_prepare_user_columns($pdo);
if (!auth_support_user_is_active($pdo, (int)(currentUser()['id'] ?? 0))) {
  $_SESSION = [];
  session_destroy();
  header('Location: ' . admin_login_url('disabled'));
  exit;
}
if (auth_support_user_needs_privacy_acceptance($pdo, (int)(currentUser()['id'] ?? 0))) {
  header('Location: privacy_accept.php');
  exit;
}

bv_enforce_maintenance($pdo);

// Standardstartsida per roll
$role        = currentUser()['role'] ?? '';
$defaultPage = in_array($role, ['admin','masteradmin'], true) ? 'dashboard' : 'projects';

// Sätt page om saknas
if (!isset($_GET['page']) || $_GET['page'] === '') {
  $_GET['page'] = $defaultPage;
}
$page = (string)$_GET['page'];

// 🔒 FÅNGA EXPORTER *INNAN* layouten laddas
switch ($page) {
  case 'export_project_stats_print':
    require __DIR__ . '/views/export_project_stats_print.php';
    return; // superviktigt: stoppa här

  case 'export_project_stats_csv':
    require __DIR__ . '/actions/export_project_stats_csv.php';
    return; // superviktigt
}

// Här härleder vi tema-kontexten (så projektsidor/orgsidor får rätt tema)
$THEME_CTX = ['project_id' => null, 'org_id' => null];

// Sidor som typiskt har ett projekt-id i query
$projectPages = [
  'project', 'project_detail', 'project_units', 'project_stats', 'project_activity',
  'edit_project', 'project_import', 'project_settings', 'viewer_admin', 'viewer_embed'
];
// Sidor som typiskt har ett org-id i query
$orgPages = ['organization_detail'];

if (in_array($page, $projectPages, true) && isset($_GET['id'])) {
  $THEME_CTX['project_id'] = (int)$_GET['id'];
} elseif (in_array($page, $orgPages, true) && isset($_GET['id'])) {
  $THEME_CTX['org_id'] = (int)$_GET['id'];
}

// Om ingen kontext – använd användarens standard-organisation för tema
if ($THEME_CTX['project_id'] === null && $THEME_CTX['org_id'] === null) {
  $u = currentUser();
  if ($u && !empty($u['id'])) {
    $stmt = $pdo->prepare("
      SELECT organization_id
      FROM organization_members
      WHERE user_id = ? AND is_default = 1
      LIMIT 1
    ");
    $stmt->execute([(int)$u['id']]);
    $orgId = (int)$stmt->fetchColumn();
    if ($orgId > 0) {
      $THEME_CTX['org_id'] = $orgId;
    }
  }
}

// 👉 allt annat går via layout
require __DIR__ . '/views/layout.php';
