<?php
/** @var array<string,mixed> $casesData */
/** @var array<string,string> $filters */
/** @var array<int,string> $allowedSites */
$data = is_array($casesData ?? null) ? $casesData : [];
$rows = is_array($data['rows'] ?? null) ? $data['rows'] : [];
$summary = is_array($data['summary'] ?? null) ? $data['summary'] : [];
$filterOptions = is_array($data['filter_options'] ?? null) ? $data['filter_options'] : [];
$monthOptions = is_array($data['month_options'] ?? null) ? $data['month_options'] : [];
$siteStatus = is_array($data['site_status'] ?? null) ? $data['site_status'] : [];
$contract = is_array($data['contract'] ?? null) ? $data['contract'] : [];
$isAr = current_lang() === 'ar';
$tr = static function (string $en, string $ar) use ($isAr): string { return $isAr ? $ar : $en; };
$num = static function ($value, int $decimals = 0): string { return number_format((float)$value, $decimals); };
$money = static function ($value): string { return number_format((float)$value, 2); };
$pageNo = max(1, (int)($data['page'] ?? 1));
$totalPages = max(1, (int)($data['total_pages'] ?? 1));
$perPage = (int)($data['per_page'] ?? 25);
$total = (int)($data['total'] ?? 0);
$severityLabels = [
    'CRITICAL' => $tr('Critical', 'حرجة'),
    'HIGH' => $tr('High', 'عالية'),
    'MEDIUM' => $tr('Medium', 'متوسطة'),
];
$sortLabels = [
    'priority' => $tr('Priority then score', 'الأولوية ثم الدرجة'),
    'newest' => $tr('Newest date', 'الأحدث تاريخًا'),
    'score' => $tr('Highest review score', 'أعلى درجة مراجعة'),
    'value' => $tr('Highest associated value', 'أعلى قيمة مرتبطة'),
    'transactions' => $tr('Most transactions', 'أكثر المعاملات'),
];
$queryBase = $data['filters'] ?? $filters;
$queryBase['per_page'] = $perPage;
$returnQuery = $queryBase;
$returnQuery['p'] = $pageNo;
$returnQuery['lang'] = current_lang();
$currentCasesUrl = url_to('diar-cases', $returnQuery);
$currencyLabel = $isAr ? 'ر.س' : 'SAR';
?>
<link rel="stylesheet" href="assets/css/diar-cases.css?v=diar-6b3-r3">
<!-- DIAR_6B_2_R3_1_SIDEBAR_ONLY_NAV -->

<section class="diar-cases-page">
    <header class="cases-hero">
        <div>
            <span class="cases-eyebrow"><?= e($tr('MONTHLY MEDICATION RISK REVIEW', 'المراجعة الشهرية لمخاطر الأدوية')) ?></span>
            <h1><?= e($tr('Medication Risk Cases', 'حالات مخاطر مخزون الأدوية')) ?></h1>
            <p><?= e($tr(
                'Search preserved monthly cases by hospital, branch, store, item, unit and movement type.',
                'ابحث في حالات الشذوذ الشهرية المحفوظة باستخدام مستوى التحليل الدقيقة وهوية المصدر الكاملة.'
            )) ?></p>
        </div>
        <div class="cases-hero-total">
            <span><?= e($tr('Filtered cases', 'الحالات بعد التصفية')) ?></span>
            <strong><?= $num($total) ?></strong>
            <small><?= e((string)($data['selected_month'] ?? '—')) ?></small>
        </div>
    </header>

    <div class="cases-boundary-note">
        <strong><?= e($tr('Important review note', 'ملاحظة مهمة للمراجعة')) ?></strong>
        <span><?= e($tr(
            'A listed case identifies unusual activity that requires review. It is not proof of theft, manipulation or confirmed financial loss.',
            'تشير الحالة المعروضة إلى نشاط غير معتاد يتطلب المراجعة، وليست إثباتًا على سرقة أو تلاعب أو خسارة مالية مؤكدة.'
        )) ?></span>
    </div>

    <?php if (!empty($loadError)): ?>
        <div class="cases-alert cases-alert-error"><?= e($loadError) ?></div>
    <?php endif; ?>
    <?php if (!empty($data['partial_coverage'])): ?>
        <div class="cases-alert cases-alert-warning">
            <strong><?= e($tr('Some hospital data is pending', 'بعض بيانات المستشفيات قيد الانتظار')) ?></strong>
            <span><?= e($tr('Available:', 'المتاح:')) ?> <?= e(implode(', ', (array)($data['available_sites'] ?? []))) ?> · <?= e($tr('Pending:', 'قيد الانتظار:')) ?> <?= e(implode(', ', (array)($data['unavailable_sites'] ?? []))) ?></span>
        </div>
    <?php endif; ?>

    <form class="cases-filter-card" method="get" action="index.php">
        <input type="hidden" name="page" value="diar-cases">
        <input type="hidden" name="lang" value="<?= e(current_lang()) ?>">
        <div class="cases-filter-primary">
            <label><span><?= e($tr('Hospital', 'المستشفى')) ?></span><select name="site">
                <option value="ALL"><?= e($tr('All allowed hospitals', 'كل المستشفيات المسموحة')) ?></option>
                <?php foreach ($allowedSites as $site): ?>
                    <option value="<?= e($site) ?>" <?= strtoupper((string)($data['filters']['site'] ?? 'ALL')) === $site ? 'selected' : '' ?>><?= e($site) ?></option>
                <?php endforeach; ?>
            </select></label>
            <label><span><?= e($tr('Reporting month', 'شهر التقرير')) ?></span><select name="month">
                <?php foreach ($monthOptions as $option): $key=(string)($option['month_key'] ?? ''); ?>
                    <option value="<?= e($key) ?>" <?= (string)($data['selected_month'] ?? '') === $key ? 'selected' : '' ?>><?= e($key) ?> · <?= e((string)($option['status_code'] ?? '')) ?></option>
                <?php endforeach; ?>
            </select></label>
            <label><span><?= e($tr('Priority', 'الأولوية')) ?></span><select name="severity">
                <option value=""><?= e($tr('All priorities', 'كل الأولويات')) ?></option>
                <?php foreach ($severityLabels as $code => $label): ?>
                    <option value="<?= e($code) ?>" <?= (string)($data['filters']['severity'] ?? '') === $code ? 'selected' : '' ?>><?= e($label) ?></option>
                <?php endforeach; ?>
            </select></label>
            <label class="cases-search-field"><span><?= e($tr('Reference search', 'البحث بالمرجع')) ?></span><input name="q" value="<?= e((string)($data['filters']['q'] ?? '')) ?>" placeholder="<?= e($tr('Case, store or item reference', 'مرجع الحالة أو المخزن أو الصنف')) ?>"></label>
        </div>

        <details class="cases-advanced" <?= array_filter([
            $data['filters']['branch'] ?? '',$data['filters']['store'] ?? '',$data['filters']['item'] ?? '',$data['filters']['unit'] ?? '',
            $data['filters']['trans_code'] ?? '',$data['filters']['trans_effect'] ?? '',$data['filters']['date_from'] ?? '',
            $data['filters']['date_to'] ?? '',$data['filters']['min_score'] ?? ''
        ]) ? 'open' : '' ?>>
            <summary><?= e($tr('Additional movement filters', 'فلاتر مستوى التحليل المتقدمة')) ?></summary>
            <div class="cases-advanced-grid">
                <label><span><?= e($tr('Branch', 'الفرع')) ?></span><select name="branch"><option value=""><?= e($tr('All', 'الكل')) ?></option><?php foreach ((array)($filterOptions['branches'] ?? []) as $value): ?><option value="<?= e($value) ?>" <?= (string)($data['filters']['branch'] ?? '') === (string)$value ? 'selected' : '' ?>><?= e($value) ?></option><?php endforeach; ?></select></label>
                <label><span><?= e($tr('Store code', 'كود المخزن')) ?></span><input inputmode="numeric" name="store" value="<?= e((string)($data['filters']['store'] ?? '')) ?>"></label>
                <label><span><?= e($tr('Item code', 'كود الصنف')) ?></span><input inputmode="numeric" name="item" value="<?= e((string)($data['filters']['item'] ?? '')) ?>"></label>
                <label><span><?= e($tr('Recorded unit', 'الوحدة المسجلة')) ?></span><input inputmode="numeric" name="unit" value="<?= e((string)($data['filters']['unit'] ?? '')) ?>"></label>
                <label><span><?= e($tr('Movement type', 'نوع الحركة')) ?></span><select name="trans_code"><option value=""><?= e($tr('All', 'الكل')) ?></option><?php foreach ((array)($filterOptions['trans_codes'] ?? []) as $value): ?><option value="<?= e($value) ?>" <?= (string)($data['filters']['trans_code'] ?? '') === (string)$value ? 'selected' : '' ?>><?= e($value) ?></option><?php endforeach; ?></select></label>
                <label><span><?= e($tr('Inventory effect', 'أثر الحركة على المخزون')) ?></span><select name="trans_effect"><option value=""><?= e($tr('All', 'الكل')) ?></option><?php foreach ((array)($filterOptions['trans_effects'] ?? []) as $value): ?><option value="<?= e($value) ?>" <?= (string)($data['filters']['trans_effect'] ?? '') === (string)$value ? 'selected' : '' ?>><?= e($value) ?></option><?php endforeach; ?></select></label>
                <label><span><?= e($tr('From date', 'من تاريخ')) ?></span><input type="date" name="date_from" value="<?= e((string)($data['filters']['date_from'] ?? '')) ?>"></label>
                <label><span><?= e($tr('To date', 'إلى تاريخ')) ?></span><input type="date" name="date_to" value="<?= e((string)($data['filters']['date_to'] ?? '')) ?>"></label>
                <label><span><?= e($tr('Minimum review score', 'الحد الأدنى لدرجة المراجعة')) ?></span><input inputmode="decimal" name="min_score" value="<?= e((string)($data['filters']['min_score'] ?? '')) ?>"></label>
                <label><span><?= e($tr('Sort', 'الترتيب')) ?></span><select name="sort"><?php foreach ($sortLabels as $code=>$label): ?><option value="<?= e($code) ?>" <?= (string)($data['filters']['sort'] ?? 'priority') === $code ? 'selected' : '' ?>><?= e($label) ?></option><?php endforeach; ?></select></label>
                <label><span><?= e($tr('Rows per page', 'عدد الصفوف')) ?></span><select name="per_page"><?php foreach ([25,50,100] as $value): ?><option value="<?= $value ?>" <?= $perPage === $value ? 'selected' : '' ?>><?= $value ?></option><?php endforeach; ?></select></label>
            </div>
        </details>
        <div class="cases-filter-actions">
            <button type="submit" class="cases-primary-button"><?= e($tr('Apply filters', 'تطبيق الفلاتر')) ?></button>
            <a class="cases-secondary-button" href="<?= e(url_to('diar-cases')) ?>"><?= e($tr('Reset', 'إعادة ضبط')) ?></a>
            <a class="cases-export-button" href="<?= e(url_to('diar-reports')) ?>"><?= e($tr('Open report center', 'فتح مركز التقارير')) ?></a>
        </div>
    </form>

    <section class="cases-kpi-grid">
        <article><span><?= e($tr('Cases', 'الحالات')) ?></span><strong><?= $num($summary['total_count'] ?? 0) ?></strong><small><?= e($tr('Matching current filters', 'مطابقة للفلاتر الحالية')) ?></small></article>
        <article class="cases-kpi-critical"><span><?= e($tr('Critical', 'حرجة')) ?></span><strong><?= $num($summary['critical_count'] ?? 0) ?></strong><small><?= e($tr('Highest investigation priority', 'أعلى أولوية للتحقيق')) ?></small></article>
        <article class="cases-kpi-high"><span><?= e($tr('High', 'عالية')) ?></span><strong><?= $num($summary['high_count'] ?? 0) ?></strong><small><?= e($tr('Requires timely review', 'تتطلب مراجعة في الوقت المناسب')) ?></small></article>
        <article><span><?= e($tr('Associated value', 'القيمة المرتبطة')) ?></span><strong><?= $money($summary['inventory_cost_abs'] ?? 0) ?> <?= e($currencyLabel) ?></strong><small><?= e($tr('Associated inventory cost; not confirmed loss', 'تكلفة مخزون مرتبطة؛ وليست خسارة مؤكدة')) ?></small></article>
        <article><span><?= e($tr('Transactions', 'المعاملات')) ?></span><strong><?= $num($summary['transaction_count'] ?? 0) ?></strong><small><?= e($tr('Transactions linked to the selected cases', 'المعاملات المرتبطة بالحالات المحددة')) ?></small></article>
        <article><span><?= e($tr('Stores / items', 'المخازن / الأصناف')) ?></span><strong><?= $num($summary['store_count'] ?? 0) ?> / <?= $num($summary['item_count'] ?? 0) ?></strong><small><?= e($tr('Stores and items in the current results', 'المخازن والأصناف في النتائج الحالية')) ?></small></article>
    </section>

    <section class="cases-table-card">
        <div class="cases-table-heading">
            <div><span><?= e($tr('Preserved monthly evidence', 'أدلة شهرية محفوظة')) ?></span><h2><?= e($tr('Case search results', 'نتائج البحث في الحالات')) ?></h2><p><?= e(sprintf($tr('Showing %s–%s of %s cases.', 'عرض %s–%s من %s حالة.'), $num($data['from_row'] ?? 0), $num($data['to_row'] ?? 0), $num($total))) ?></p></div>
            <div class="cases-snapshot-count"><span><?= e($tr('Monthly records', 'السجلات الشهرية')) ?></span><strong><?= $num(count((array)($data['snapshot_refs'] ?? []))) ?></strong></div>
        </div>
        <?php if ($rows === []): ?>
            <div class="cases-empty"><?= e($tr('No monthly cases match the selected filters.', 'لا توجد حالات شهرية تطابق الفلاتر المحددة.')) ?></div>
        <?php else: ?>
            <div class="cases-table-wrap">
                <table class="cases-table">
                    <thead><tr>
                        <th><?= e($tr('Priority', 'الأولوية')) ?></th><th><?= e($tr('Date', 'التاريخ')) ?></th><th><?= e($tr('Hospital / reporting month', 'المستشفى / السجلات الشهريةة')) ?></th>
                        <th><?= e($tr('Store / branch', 'المخزن / الفرع')) ?></th><th><?= e($tr('Item / unit', 'الصنف / الوحدة')) ?></th><th><?= e($tr('Movement', 'الحركة')) ?></th>
                        <th><?= e($tr('Evidence volume', 'حجم الدليل')) ?></th><th><?= e($tr('Associated value', 'القيمة المرتبطة')) ?></th><th><?= e($tr('Reference', 'المرجع')) ?></th><th class="cases-actions-column"><?= e($tr('Actions', 'الإجراءات')) ?></th>
                    </tr></thead>
                    <tbody><?php foreach ($rows as $row): $severity=(string)($row['severity_code'] ?? 'MEDIUM');
                        $evidenceParams = [
                            'hospital' => (string)($row['hospital_code'] ?? ''),
                            'source_db' => (string)($row['source_db'] ?? ''),
                            'snapshot_id' => (string)($row['month_snapshot_id'] ?? ''),
                            'month_case_id' => (string)($row['month_case_id'] ?? ''),
                            'return' => $currentCasesUrl,
                        ];
                        $evidenceUrl = url_to('diar-case-evidence', $evidenceParams);
                    ?>
                        <tr>
                            <td data-label="<?= e($tr('Priority', 'الأولوية')) ?>"><span class="cases-severity cases-severity-<?= e(strtolower($severity)) ?>"><?= e($severityLabels[$severity] ?? $severity) ?></span><strong class="cases-score"><?= $num($row['anomaly_score'] ?? 0, 2) ?></strong></td>
                            <td data-label="<?= e($tr('Date', 'التاريخ')) ?>"><strong><?= e((string)($row['calendar_day'] ?? '')) ?></strong></td>
                            <td data-label="<?= e($tr('Hospital / reporting month', 'المستشفى / شهر التقرير')) ?>"><strong><?= e((string)($row['hospital_code'] ?? '')) ?></strong><span><?= e((string)($data['selected_month'] ?? '')) ?></span></td>
                            <td data-label="<?= e($tr('Store / branch', 'المخزن / الفرع')) ?>"><strong><?= e((string)($row['store_code'] ?? '')) ?></strong><span><?= e($tr('Branch', 'فرع')) ?> <?= e((string)($row['branch_id'] ?? '')) ?></span></td>
                            <td data-label="<?= e($tr('Item / unit', 'الصنف / الوحدة')) ?>"><strong><?= e((string)($row['item_code'] ?? '')) ?></strong><span><?= e($tr('Recorded unit', 'الوحدة المسجلة')) ?> <?= e((string)($row['raw_unit_code'] ?? '')) ?></span></td>
                            <td data-label="<?= e($tr('Movement', 'الحركة')) ?>"><strong><?= e((string)($row['storetranscode'] ?? '')) ?></strong><span><?= e($tr('Effect', 'التأثير')) ?> <?= e((string)($row['storetranseffect'] ?? '')) ?></span></td>
                            <td data-label="<?= e($tr('Evidence volume', 'حجم الدليل')) ?>"><strong><?= $num($row['transaction_count'] ?? 0) ?> <?= e($tr('transactions', 'معاملة')) ?></strong><span><?= $num($row['movement_lines'] ?? 0) ?> <?= e($tr('lines', 'سطرًا')) ?></span></td>
                            <td data-label="<?= e($tr('Associated value', 'القيمة المرتبطة')) ?>"><strong><?= $money($row['inventory_cost_abs'] ?? 0) ?></strong><span><?= e($currencyLabel) ?></span></td>
                            <td data-label="<?= e($tr('Reference', 'المرجع')) ?>"><a class="cases-reference-link" href="<?= e($evidenceUrl) ?>">MC-<?= e((string)($row['month_case_id'] ?? '')) ?></a><span><?= e($tr('Preserved monthly case', 'حالة شهرية محفوظة')) ?></span></td>
                            <td class="cases-actions-cell" data-label="<?= e($tr('Actions', 'الإجراءات')) ?>"><a class="cases-evidence-button" href="<?= e($evidenceUrl) ?>"><span aria-hidden="true">▣</span><?= e($tr('View evidence', 'عرض الأدلة')) ?></a></td>
                        </tr>
                    <?php endforeach; ?></tbody>
                </table>
            </div>
        <?php endif; ?>

        <?php if ($totalPages > 1): ?>
            <nav class="cases-pagination" aria-label="<?= e($tr('Case result pages', 'صفحات نتائج الحالات')) ?>">
                <?php if ($pageNo > 1): $q=$queryBase; $q['p']=$pageNo-1; ?><a href="<?= e(url_to('diar-cases',$q)) ?>"><?= e($tr('Previous', 'السابق')) ?></a><?php endif; ?>
                <span><?= e($tr('Page', 'صفحة')) ?> <?= $num($pageNo) ?> / <?= $num($totalPages) ?></span>
                <?php if ($pageNo < $totalPages): $q=$queryBase; $q['p']=$pageNo+1; ?><a href="<?= e(url_to('diar-cases',$q)) ?>"><?= e($tr('Next', 'التالي')) ?></a><?php endif; ?>
            </nav>
        <?php endif; ?>
    </section>

    <details class="cases-technical-contract">
        <summary><?= e($tr('How this case was identified', 'كيفية تحديد الحالة')) ?></summary>
        <div class="cases-contract-footer">
            <div><span><?= e($tr('Case reference', 'مرجع الحالة')) ?></span><strong><?= e((string)($contract['identity'] ?? '—')) ?></strong></div>
            <div><span><?= e($tr('Level of analysis', 'مستوى التحليل')) ?></span><strong><?= e((string)($contract['grain'] ?? '—')) ?></strong></div>
            <div><span><?= e($tr('Excluded stores', 'المخازن المستبعدة')) ?></span><strong><?= e(implode(', ', (array)($contract['excluded_stores'] ?? []))) ?></strong></div>
            <span class="cases-next-phase"><?= e($tr(
                'Each row opens the preserved evidence for the selected hospital, reporting month and case.',
                'يفتح كل صف الأدلة المحفوظة للمستشفى وشهر التقرير والحالة المحددة.'
            )) ?></span>
        </div>
    </details>
</section>
