<?php
// ============================================================
// come2canada.life — API: Dashboard-Metriken
// /c2c/api/dashboard.php
//
// Liest aus den neuen Tabellen, antwortet im alten Format.
// ============================================================

require_once __DIR__ . '/bootstrap.php';
require_once __DIR__ . '/../includes/hq_bridge.php';
requireAuth();

$pdo = db();

// ─────────────────────────────────────────────
// Pipeline-Stages: zähle clients je Status, gemappt auf deutsche Stages
// ─────────────────────────────────────────────
$pipeline = [
    'formular_neu'       => 0,
    'analyse_ausstehend' => 0,
    'story_laeuft'       => 0,
    'review'             => 0,
    'geliefert'          => 0,
];

$stmt = $pdo->query("SELECT status, COUNT(*) AS anz FROM clients GROUP BY status");
foreach ($stmt->fetchAll() as $row) {
    $de = map_status_en_to_de($row['status']);
    if (!isset($pipeline[$de])) $pipeline[$de] = 0;
    $pipeline[$de] += (int)$row['anz'];
}

// ─────────────────────────────────────────────
// Metriken
// ─────────────────────────────────────────────
$total = (int)$pdo->query("
    SELECT COUNT(*) FROM clients WHERE status != 'delivered'
")->fetchColumn();

// 'Stories offen' — wir interpretieren das als: Klienten mit Status 'ready' oder 'released'
// (warten auf Christians Aktion oder Bezahlung)
$storiesOffen = (int)$pdo->query("
    SELECT COUNT(*) FROM clients WHERE status IN ('ready','released')
")->fetchColumn();

// 'Formulare neu' — clients mit status 'new' (noch nicht analyzed)
$formNeu = (int)$pdo->query("
    SELECT COUNT(*) FROM clients WHERE status = 'new'
")->fetchColumn();

// Umsatz im laufenden Quartal — alle 'paid' oder 'delivered' clients
$preise = ['starter' => 299, 'portfolio' => 599, 'family' => 799];
$umsatz = 0;
$umsatzStmt = $pdo->query("
    SELECT service_type, COUNT(*) AS anz
      FROM clients
     WHERE status IN ('paid','delivered')
       AND QUARTER(created_at) = QUARTER(NOW())
       AND YEAR(created_at)    = YEAR(NOW())
     GROUP BY service_type
");
foreach ($umsatzStmt->fetchAll() as $row) {
    $umsatz += ($preise[$row['service_type']] ?? 0) * (int)$row['anz'];
}

// ─────────────────────────────────────────────
// Aktivitäten — top 5
// `aktivitaeten` referenziert vermutlich klienten.id (Legacy).
// Falls die Verknüpfung leer ist, zeigen wir nur aktion+beschreibung.
// ─────────────────────────────────────────────
$aktivitaeten = [];
try {
    $aktQ = $pdo->query("
        SELECT a.aktion, a.beschreibung, a.erstellt_am, a.klient_id,
               c.vorname, c.nachname
          FROM aktivitaeten a
          LEFT JOIN clients c ON c.id = a.klient_id
         ORDER BY a.erstellt_am DESC
         LIMIT 5
    ");
    $aktivitaeten = $aktQ->fetchAll();
} catch (Throwable $e) {
    // Falls aktivitaeten-Tabelle anders gebaut ist: leer lassen, nicht crashen
    $aktivitaeten = [];
}

ok([
    'metriken' => [
        'aktive_klienten' => $total,
        'stories_offen'   => $storiesOffen,
        'formulare_neu'   => $formNeu,
        'umsatz_quartal'  => $umsatz,
    ],
    'pipeline'     => $pipeline,
    'aktivitaeten' => $aktivitaeten,
]);
