<?php
/** @var array<string,mixed> $profileData */
$data = is_array($profileData ?? null) ? $profileData : [];
$availability = is_array($data['availability'] ?? null) ? $data['availability'] : [];
$summary = is_array($data['summary'] ?? null) ? $data['summary'] : [];
$rows = is_array($data['rows'] ?? null) ? $data['rows'] : [];
$options = is_array($data['options'] ?? null) ? $data['options'] : [];
$filters = is_array($filters ?? null) ? $filters : [];
$total = (int)($data['total'] ?? 0);
$page = max(1, (int)($data['page'] ?? 1));
$perPage = max(1, (int)($data['per_page'] ?? 50));
$totalPages = max(1, (int)ceil($total / $perPage));
$status = (string)($availability['status'] ?? 'PENDING_5D');
$isAr = current_lang() === 'ar';
$tr = static function (string $en, string $ar) use ($isAr): string { return $isAr ? $ar : $en; };
$readinessLabels = [
    'READY' => $tr('Ready', 'جاهز'),
    'LIMITED' => $tr('Limited', 'محدود'),
    'SPARSE' => $tr('Sparse', 'متناثر'),
    'NO_ACTIVITY' => $tr('No activity', 'دون نشاط'),
];
$number = static function ($value, int $decimals = 2): string {
    if ($value === null || $value === '') return '—';
    return number_format((float)$value, $decimals);
};
?>
<section class="diar-command-page diar-ui-r3 diar-profile-workspace diar-functional-page" data-diar-ui3-profile-workspace="true">
    <?php include __DIR__ . '/_tabs.php'; ?>
    <?php include __DIR__ . '/_context.php'; ?>

    <header class="diar-subpage-hero profile-hero">
        <div class="hero-copy">
            <span class="eyebrow"><?= e($tr('DIAR-5D · CURRENT STATISTICAL PROFILE ENGINE', 'DIAR-5D · محرك الخطوط الإحصائية للسلوك الطبيعي')) ?></span>
            <h1><?= e($tr('Statistical baselines for normal movement', 'الخطوط الإحصائية للسلوك الطبيعي')) ?></h1>
            <p><?= e($tr(
                'A read-only baseline for the normal behaviour of every exact medication movement grain. The engine learns from completed historical days; it does not apply one fixed quantity limit to all items.',
                'خط إحصائي للقراءة فقط يوضح السلوك الطبيعي لكل حبة دقيقة من حركات الأدوية. يتعلم المحرك من الأيام التاريخية المكتملة، ولا يطبق حد كمية ثابتًا واحدًا على جميع الأصناف.'
            )) ?></p>
        </div>
        <aside class="hero-boundary">
            <span class="boundary-label"><?= e($tr('Profile availability', 'حالة الملفات')) ?></span>
            <strong><?= e($status === 'LIVE' ? $tr('Live profiles available', 'الملفات الفعلية متاحة') : ($status === 'EMPTY_READY' ? $tr('Structure ready; profiles empty', 'الهيكل جاهز والملفات فارغة') : $tr('Waiting for DIAR-5D-R1', 'في انتظار DIAR-5D-R1'))) ?></strong>
            <span><?= e($tr('Primary 180 days · Recent 30 days · Sparse fallback 365 days', 'أساسي 180 يومًا · حديث 30 يومًا · بديل متناثر 365 يومًا')) ?></span>
        </aside>
    </header>

    <?php if (!empty($loadError)): ?><div class="diar-command-alert error"><?= e($loadError) ?></div><?php endif; ?>

    <section class="diar-command-section baseline-explainer">
        <div class="section-heading"><div><span class="section-kicker"><?= e($tr('WHAT THIS PAGE MEANS', 'ماذا تعني هذه الصفحة')) ?></span><h2><?= e($tr('The normal pattern for each exact movement', 'النمط الطبيعي لكل حركة دقيقة')) ?></h2><p><?= e($tr('Each row describes only one hospital, branch, store, item, raw unit, transaction code and raw effect combination.', 'يصف كل صف تركيبة واحدة فقط من المستشفى والفرع والمخزن والصنف والوحدة الخام وكود الحركة والتأثير الخام.')) ?></p></div></div>
        <div class="metric-guide-grid">
            <article><span>01</span><strong><?= e($tr('Usual level', 'المستوى المعتاد')) ?></strong><p><?= e($tr('Average and median show the typical daily quantity or value for this exact movement.', 'يوضح المتوسط والوسيط الكمية أو القيمة اليومية المعتادة لهذه الحركة الدقيقة.')) ?></p></article>
            <article><span>02</span><strong><?= e($tr('Normal variation', 'التذبذب الطبيعي')) ?></strong><p><?= e($tr('Standard deviation and robust spread describe how much the movement normally changes.', 'يصف الانحراف المعياري ونطاق التذبذب مقدار التغير الطبيعي المعتاد للحركة.')) ?></p></article>
            <article><span>03</span><strong><?= e($tr('Frequency', 'التكرار')) ?></strong><p><?= e($tr('Active days and line counts show how often the movement normally occurs.', 'توضح أيام النشاط وعدد الأسطر مدى تكرار الحركة في المعتاد.')) ?></p></article>
            <article><span>04</span><strong><?= e($tr('Dormancy', 'الخمول')) ?></strong><p><?= e($tr('The engine records how long the movement can remain inactive before reappearing.', 'يسجل المحرك المدة التي قد تتوقف فيها الحركة قبل أن تظهر من جديد.')) ?></p></article>
        </div>
        <div class="clarity-note"><strong><?= e($tr('Important:', 'مهم:')) ?></strong><span><?= e($tr('A statistical baseline describes normal history. It is not itself an accusation or a risk rule.', 'الخط الإحصائي يصف التاريخ الطبيعي، وليس اتهامًا أو قاعدة مخاطر بحد ذاته.')) ?></span></div>
    </section>
    <?php if ($status === 'PENDING_5D'): ?>
        <div class="diar-command-alert warning profile-pending-alert">
            <strong><?= e($tr('The site page is installed, but the live 5D.1 profile contract is not complete on this database yet.', 'تم تثبيت صفحة الموقع، لكن عقد الملفات الفعلي 5D.1 لم يكتمل في قاعدة البيانات هذه بعد.')) ?></strong>
            <span><?= e($tr('No placeholder statistics are shown. Refresh this page after the DIAR-5D-R1 Evidence reports PASS.', 'لا يتم عرض إحصاءات افتراضية. أعد تحميل الصفحة بعد أن تُظهر Evidence الخاصة بـ DIAR-5D-R1 نتيجة PASS.')) ?></span>
            <?php if (!empty($availability['missing_columns'])): ?><small><?= e($tr('Pending fields:', 'الحقول المنتظرة:')) ?> <?= e(implode(', ', (array)$availability['missing_columns'])) ?></small><?php endif; ?>
        </div>
    <?php elseif ($status === 'EMPTY_READY'): ?>
        <div class="diar-command-alert info"><strong><?= e($tr('The 5D.1 structure is available, but no current profiles were returned.', 'هيكل 5D.1 متاح، لكن لم تُرجع ملفات إحصائية حالية.')) ?></strong><span><?= e($tr('Review the latest engine run before drawing conclusions.', 'راجع آخر تشغيل للمحرك قبل استخلاص أي استنتاج.')) ?></span></div>
    <?php endif; ?>

    <div class="diar-command-kpis profile-kpis">
        <article><span><?= e($tr('Profiles', 'الملفات')) ?></span><strong><?= number_format((int)($summary['profile_count'] ?? 0)) ?></strong><small><?= e($tr('Current only', 'الحالية فقط')) ?></small></article>
        <article class="readiness-ready"><span><?= e($tr('Ready', 'جاهز')) ?></span><strong><?= number_format((int)($summary['ready_count'] ?? 0)) ?></strong><small><?= e($tr('30+ active primary days', '30 يوم نشاط أساسي فأكثر')) ?></small></article>
        <article class="readiness-limited"><span><?= e($tr('Limited', 'محدود')) ?></span><strong><?= number_format((int)($summary['limited_count'] ?? 0)) ?></strong><small><?= e($tr('10–29 active primary days', 'من 10 إلى 29 يوم نشاط أساسي')) ?></small></article>
        <article class="readiness-sparse"><span><?= e($tr('Sparse', 'متناثر')) ?></span><strong><?= number_format((int)($summary['sparse_count'] ?? 0)) ?></strong><small><?= e($tr('365-day fallback', 'بديل 365 يومًا')) ?></small></article>
        <article class="readiness-no_activity"><span><?= e($tr('No activity', 'دون نشاط')) ?></span><strong><?= number_format((int)($summary['no_activity_count'] ?? 0)) ?></strong><small><?= e($tr('Retained grain without recent activity', 'حبة محتفظ بها دون نشاط حديث')) ?></small></article>
    </div>

    <section class="diar-command-section profile-contract-panel">
        <div class="section-heading">
            <div><h2><?= e($tr('Versioned profile contract', 'عقد الملف المرتبط بالإصدار')) ?></h2><p><?= e($tr('Every displayed row remains traceable to the run, ruleset, movement map and profile method that produced it.', 'يظل كل صف معروض قابلًا للتتبع إلى التشغيل ومجموعة القواعد وقاموس الحركات وطريقة الملف التي أنشأته.')) ?></p></div>
            <span class="profile-live-chip status-<?= e(strtolower($status)) ?>"><?= e($status) ?></span>
        </div>
        <div class="profile-contract-grid">
            <div><span><?= e($tr('Hospital', 'المستشفى')) ?></span><strong><?= e((string)($data['site'] ?? '—')) ?></strong></div>
            <div><span><?= e($tr('As of', 'حتى تاريخ')) ?></span><strong><?= e((string)($summary['as_of_date'] ?: '—')) ?></strong></div>
            <div><span><?= e($tr('Stat run', 'التشغيل الإحصائي')) ?></span><strong><?= (int)($summary['latest_stat_run_id'] ?? 0) > 0 ? number_format((int)$summary['latest_stat_run_id']) : '—' ?></strong></div>
            <div><span><?= e($tr('Package', 'الحزمة')) ?></span><strong><?= e((string)($summary['package_version'] ?: '—')) ?></strong></div>
            <div><span><?= e($tr('Method', 'الطريقة')) ?></span><strong><?= e((string)($summary['profile_method_version'] ?: '—')) ?></strong></div>
            <div class="wide"><span><?= e($tr('Exact grain', 'الحبة الدقيقة')) ?></span><strong>Hospital + Source DB + Branch + Store + Item + Raw Unit + STORETRANSCODE + STORETRANSEFFECT</strong></div>
        </div>
    </section>

    <form class="diar-profile-filters" method="get" action="index.php">
        <input type="hidden" name="page" value="diar-statistical-profiles"><input type="hidden" name="lang" value="<?= e(current_lang()) ?>">
        <div class="field"><label><?= e($tr('Hospital', 'المستشفى')) ?></label><select name="site"><?php foreach ((array)$allowedSites as $site): ?><option value="<?= e((string)$site) ?>" <?= (string)($filters['site'] ?? '') === (string)$site ? 'selected' : '' ?>><?= e((string)$site) ?></option><?php endforeach; ?></select></div>
        <div class="field"><label><?= e($tr('Readiness', 'الجاهزية')) ?></label><select name="readiness"><option value=""><?= e($tr('All readiness levels', 'كل مستويات الجاهزية')) ?></option><?php foreach ($readinessLabels as $code => $label): ?><option value="<?= e($code) ?>" <?= (string)($filters['readiness'] ?? '') === $code ? 'selected' : '' ?>><?= e($label) ?></option><?php endforeach; ?></select></div>
        <div class="field field-search"><label><?= e($tr('Item, store, branch or profile hash', 'الصنف أو المخزن أو الفرع أو بصمة الملف')) ?></label><input name="q" value="<?= e((string)($filters['q'] ?? '')) ?>" placeholder="<?= e($tr('Exact code or hash fragment', 'كود دقيق أو جزء من البصمة')) ?>"></div>
        <?php foreach (['branch'=>$tr('Branch','الفرع'),'store'=>$tr('Store','المخزن'),'item'=>$tr('Item','الصنف'),'unit'=>$tr('Raw unit','الوحدة الخام'),'transcode'=>'STORETRANSCODE','effect'=>'STORETRANSEFFECT'] as $key=>$label): ?>
            <div class="field"><label><?= e($label) ?></label><input inputmode="numeric" name="<?= e($key) ?>" value="<?= e((string)($filters[$key] ?? '')) ?>"></div>
        <?php endforeach; ?>
        <div class="filter-actions"><button class="primary-button" type="submit"><?= e($tr('Apply filters', 'تطبيق الفلاتر')) ?></button><a class="secondary-button" href="<?= e(url_to('diar-statistical-profiles',['site'=>(string)($data['site'] ?? '')])) ?>"><?= e($tr('Reset', 'إعادة ضبط')) ?></a></div>
    </form>

    <section class="diar-command-section profile-results-section">
        <div class="section-heading"><div><h2><?= e($tr('Statistical baseline registry', 'سجل الخطوط الإحصائية')) ?></h2><p><?= number_format($total) ?> <?= e($tr('matching exact-grain profiles', 'ملفًا مطابقًا على الحبة الدقيقة')) ?></p></div><strong><?= e((string)($summary['last_updated_at'] ?: '—')) ?></strong></div>
        <?php if ($rows === []): ?>
            <div class="diar-empty-state"><strong><?= e($status === 'PENDING_5D' ? $tr('Live profiles are not available yet.', 'الملفات الفعلية غير متاحة بعد.') : $tr('No profiles match the selected filters.', 'لا توجد ملفات تطابق الفلاتر المحددة.')) ?></strong><span><?= e($tr('No synthetic or placeholder rows are used.', 'لا يتم استخدام صفوف اصطناعية أو افتراضية.')) ?></span></div>
        <?php else: ?>
            <div class="diar-table-wrap profile-table-wrap"><table class="diar-data-table profile-table"><thead><tr>
                <th><?= e($tr('Identity', 'الهوية')) ?></th><th><?= e($tr('Movement grain', 'حبة الحركة')) ?></th><th><?= e($tr('Readiness', 'الجاهزية')) ?></th><th><?= e($tr('Activity', 'النشاط')) ?></th><th><?= e($tr('Quantity profile', 'ملف الكمية')) ?></th><th><?= e($tr('Frequency & line', 'التكرار والسطر')) ?></th><th><?= e($tr('Value profile', 'ملف القيمة')) ?></th><th><?= e($tr('Version binding', 'الربط بالإصدار')) ?></th>
            </tr></thead><tbody>
            <?php foreach ($rows as $row): $ready=(string)($row['readiness_code'] ?? ''); ?>
                <tr>
                    <td><strong><?= e((string)($row['hospital_code'] ?? '')) ?> · <?= e((string)($row['source_db'] ?? '')) ?></strong><small><?= e($tr('Branch','فرع')) ?> <?= e((string)($row['branch_id'] ?? '')) ?> · <?= e($tr('Store','مخزن')) ?> <?= e((string)($row['store_code'] ?? '')) ?><br><?= e($tr('Item','صنف')) ?> <?= e((string)($row['item_code'] ?? '')) ?> · <?= e($tr('Unit','وحدة')) ?> <?= e((string)($row['raw_unit_code'] ?? '')) ?></small></td>
                    <td><code><?= e((string)($row['storetranscode'] ?? '')) ?></code><span class="effect-badge effect-<?= e((string)($row['storetranseffect'] ?? '')) ?>">Effect <?= e((string)($row['storetranseffect'] ?? '')) ?></span><small><?= e((string)($row['movement_group_code'] ?? '—')) ?> · <?= e((string)($row['direction_code'] ?? '—')) ?></small></td>
                    <td><span class="readiness-badge readiness-<?= e(strtolower($ready)) ?>"><?= e($readinessLabels[$ready] ?? $ready) ?></span><small><?= e($tr('As of','حتى')) ?> <?= e((string)($row['as_of_date'] ?? '—')) ?><br><?= e($tr('Last activity','آخر نشاط')) ?> <?= e((string)($row['last_activity_date'] ?? '—')) ?></small></td>
                    <td><strong><?= number_format((int)($row['active_days'] ?? 0)) ?> / <?= number_format((int)($row['observation_days'] ?? 0)) ?></strong><small><?= e($tr('Primary','أساسي')) ?> <?= number_format((int)($row['primary_active_days'] ?? 0)) ?> · <?= e($tr('Recent','حديث')) ?> <?= number_format((int)($row['recent_active_days'] ?? 0)) ?> · <?= e($tr('Sparse','متناثر')) ?> <?= number_format((int)($row['sparse_active_days'] ?? 0)) ?></small></td>
                    <td><strong>P95 <?= $number($row['qty_p95'] ?? null) ?></strong><small><?= e($tr('Median','وسيط')) ?> <?= $number($row['qty_median'] ?? null) ?> · <?= e($tr('Mean','متوسط')) ?> <?= $number($row['qty_mean'] ?? null) ?><br><?= e($tr('Recent mean','متوسط حديث')) ?> <?= $number($row['recent_qty_mean'] ?? null) ?></small></td>
                    <td><strong>Txn P95 <?= $number($row['txn_p95'] ?? null) ?></strong><small><?= e($tr('Txn mean','متوسط التكرار')) ?> <?= $number($row['txn_mean'] ?? null) ?><br><?= e($tr('Line P95','السطر P95')) ?> <?= $number($row['line_abs_p95'] ?? null) ?></small></td>
                    <td><strong>P95 <?= $number($row['value_p95'] ?? null) ?></strong><small><?= e($tr('Median','وسيط')) ?> <?= $number($row['value_median'] ?? null) ?> · <?= e($tr('Absolute P95','المطلق P95')) ?> <?= $number($row['abs_value_p95'] ?? null) ?><br><?= e($tr('Recent mean','متوسط حديث')) ?> <?= $number($row['recent_value_mean'] ?? null) ?></small></td>
                    <td><strong>Run <?= number_format((int)($row['stat_run_id'] ?? 0)) ?></strong><small><?= e((string)($row['profile_method_version'] ?? '—')) ?> · Ruleset <?= number_format((int)($row['ruleset_version_id'] ?? 0)) ?><br><code title="<?= e((string)($row['profile_hash'] ?? '')) ?>"><?= e(substr((string)($row['profile_hash'] ?? ''),0,12)) ?>…</code></small></td>
                </tr>
            <?php endforeach; ?>
            </tbody></table></div>
        <?php endif; ?>
        <?php if ($totalPages > 1): ?><nav class="pagination"><?php $base=$filters;$base['per_page']=$perPage;if($page>1):$q=$base;$q['p']=$page-1;?><a href="<?= e(url_to('diar-statistical-profiles',$q)) ?>"><?= e($tr('Previous','السابق')) ?></a><?php endif;?><span><?= e($tr('Page','صفحة')) ?> <?= number_format($page) ?> / <?= number_format($totalPages) ?></span><?php if($page<$totalPages):$q=$base;$q['p']=$page+1;?><a href="<?= e(url_to('diar-statistical-profiles',$q)) ?>"><?= e($tr('Next','التالي')) ?></a><?php endif;?></nav><?php endif; ?>
    </section>
</section>
