<?php
declare(strict_types=1);
if (!defined('TLG_PHASE3_INTERNAL')) { http_response_code(404); exit; }

function crm3_ready(): bool {
    try {
        $s = db()->query("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name IN ('customers','repair_jobs','repair_events')");
        return (int)$s->fetchColumn() === 3;
    } catch (PDOException $e) { error_log('CRM3 table check: '.$e->getMessage()); return false; }
}
function crm3_gate(): array {
    $user = require_auth();
    if (!crm3_ready()) {
        http_response_code(503);
        $action = (string)$user['role'] === 'admin' ? 'Ask the owner to open upgrade-fasa3.php and activate Phase 3.' : 'Please ask the owner to activate Phase 3.';
        echo '<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Module not active</title><body style="font:16px system-ui;background:#071522;color:#e0f8ff;padding:9vw"><h1>Phase 3 is not active yet</h1><p>'.h($action).'</p><a style="color:#7cddff" href="dashboard.php">Back to dashboard</a></body></html>';
        exit;
    }
    return $user;
}
function crm3_statuses(): array {
    return ['pending'=>'Pending','checking'=>'Checking','repairing'=>'Repairing','completed'=>'Completed','collected'=>'Collected','cancelled'=>'Cancelled'];
}
function crm3_can_transition(array $user, string $from, string $to): bool {
    $flows = [
        'pending'=>['checking','cancelled'], 'checking'=>['repairing','completed','cancelled'],
        'repairing'=>['checking','completed','cancelled'], 'completed'=>['repairing','collected'],
        'collected'=>[], 'cancelled'=>['pending'],
    ];
    if (!in_array($to, $flows[$from] ?? [], true)) return false;
    $role = (string)$user['role'];
    if (in_array($role,['admin','manager'],true)) return true;
    if ($role === 'technician') return in_array($to,['checking','repairing','completed'],true);
    if ($role === 'frontdesk') return ($from === 'pending' && $to === 'checking') || ($from === 'completed' && $to === 'collected');
    if ($role === 'accounts') return $from === 'completed' && $to === 'collected';
    return false;
}
function crm3_phone(string $value): string { return preg_replace('/[^0-9]/', '', $value) ?? ''; }
function crm3_date(?string $utc): string {
    if (!$utc) return '—';
    try { return (new DateTimeImmutable($utc, new DateTimeZone('UTC')))->setTimezone(new DateTimeZone('Asia/Kuala_Lumpur'))->format('d M Y, g:i A'); }
    catch(Exception) { return '—'; }
}
function crm3_reference(int $id): string { return 'TLG-'.str_pad((string)$id,6,'0',STR_PAD_LEFT); }
function crm3_header(array $user,string $active,string $title,string $subtitle): void {
    $role = role_name((string)$user['role']); $name = (string)$user['full_name'];
    $nav = ['dashboard.php'=>['Dashboard','▦'],'customers.php'=>['Customers','◎'],'repairs.php'=>['Repairs','▣']];
    ?>
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="theme-color" content="#071524"><meta name="robots" content="noindex,nofollow"><title><?= h($title) ?> | The Labs Gadget CRM</title><link rel="icon" href="assets/tlg-favicon.png" type="image/png"><link rel="stylesheet" href="assets/style.css"><link rel="stylesheet" href="assets/dashboard-v2.css"><link rel="stylesheet" href="assets/phase3.css"><script src="assets/dashboard-v2.js" defer></script></head><body class="db2-body crm3-body"><div class="db2-grid" aria-hidden="true"></div><div class="db2-layout"><div class="db2-backdrop" data-close-sidebar></div><aside class="db2-sidebar" id="db2-sidebar"><a class="db2-brand" href="dashboard.php"><img class="crm3-brand-logo" src="assets/tlg-logo-white.png" alt="The Labs Gadget logo"><span><strong>THE LABS GADGET</strong><small>OPERATIONS / CRM 03</small></span></a><div class="db2-divider"></div><div class="db2-side-label">WORKSPACE</div><nav class="db2-nav" aria-label="Main menu">
<?php foreach($nav as $href=>$item): ?><a class="db2-nav-link <?= $href===$active?'active':'' ?>" href="<?= h($href) ?>" <?= $href===$active?'aria-current="page"':'' ?>><span class="db2-nav-icon"><?= $item[1] ?></span><?= h($item[0]) ?></a><?php endforeach; ?>
<a class="db2-nav-link" href="repair-new.php"><span class="db2-nav-icon">＋</span>Register Device</a>
<a class="db2-nav-link <?= $active==='inventory.php'?'active':'' ?>" href="inventory.php"><span class="db2-nav-icon">▥</span>Inventory &amp; Barcode</a>
<?php if(in_array((string)$user['role'],['admin','manager','accounts','frontdesk'],true)): ?><a class="db2-nav-link <?= $active==='payments.php'?'active':'' ?>" href="payments.php" <?php if($active==='payments.php'):?>aria-current="page"<?php endif;?>><span class="db2-nav-icon">▤</span>Payments &amp; Invoices</a><?php endif; ?>
<a class="db2-nav-link <?= $active==='reports.php'?'active':'' ?>" href="reports.php" <?= $active==='reports.php'?'aria-current="page"':'' ?>><span class="db2-nav-icon">▥</span>Sales &amp; Performance</a>
<?php if ((string)$user['role']==='admin'): ?><a class="db2-nav-link" href="admin.php"><span class="db2-nav-icon">♙</span>Staff Management</a><?php endif; ?>
</nav><div class="db2-side-label db2-space">ACCOUNT & SECURITY</div><nav class="db2-nav"><a class="db2-nav-link" href="change-password.php"><span class="db2-nav-icon">◇</span>Change Password</a></nav><div class="db2-sidebar-bottom"><div class="db2-connection"><span class="db2-green-dot"></span>SYSTEM ONLINE</div><div class="db2-side-user"><div class="db2-avatar"><?= h(strtoupper(display_initial($name))) ?></div><div class="db2-side-user-info"><strong><?= h($name) ?></strong><small><?= h($role) ?></small></div></div><form method="post" action="logout.php"><input type="hidden" name="csrf" value="<?= h(csrf_token()) ?>"><button class="db2-logout" type="submit">↪ &nbsp; Log Out <span>↗</span></button></form></div></aside><main class="db2-main"><header class="db2-topbar"><div class="db2-topbar-left"><button class="db2-menu-btn" type="button" aria-controls="db2-sidebar" aria-expanded="false" aria-label="Open menu" data-menu-toggle>☰</button><span class="db2-breadcrumb">WORKSPACE <b>/</b> <strong><?= h(strtoupper($title)) ?></strong></span></div><div class="db2-topbar-right"><span class="db2-top-time"><?= h((new DateTimeImmutable('now',new DateTimeZone('Asia/Kuala_Lumpur')))->format('d M Y · H:i')) ?> MYT</span><span class="db2-profile-chip"><span class="db2-profile-glow"></span><?= h($role) ?></span></div></header><div class="db2-content"><div class="db2-heading crm3-heading"><div><div class="db2-kicker"><span class="db2-green-dot"></span> THE LABS GADGET / CUSTOMER OPERATIONS</div><h1><?= h($title) ?><span class="db2-period">.</span></h1><p><?= h($subtitle) ?></p></div></div>
<?php if ($msg=pull_flash()): ?><div class="db2-notice <?= h($msg['type'] ?? 'info') ?>" role="status"><?= h($msg['message'] ?? '') ?></div><?php endif; ?>
<?php }
function crm3_footer(): void { ?>
<footer class="db2-footer"><span>© <?= date('Y') ?> THE LABS GADGET <em>/</em> CRM PHASE 03</span><span>SUNGAI PETANI, KEDAH <i class="db2-footer-dot">●</i> SECURE WORKSPACE</span></footer></div></main></div></body></html>
<?php }
