{{-- resources/views/superadmin/iman-room/risk-map.blade.php --}} @extends('layouts.superadmin') @section('title','خريطة المخاطر — غرفة إيمان') @section('page-title','خريطة المخاطر — غرفة إيمان') @section('content') @php $section = $section ?? 'risk_map'; $view = $view ?? request('view','table'); // table|cards $q = $q ?? request('q',''); $status = $status ?? request('status','all'); $level = $level ?? request('level','all'); // all|high|mid|low $from = $from ?? request('from',''); $to = $to ?? request('to',''); $stats = $stats ?? []; $members = $members ?? collect(); $statusMeta = [ 'open' => ['label'=>'مفتوح','cls'=>'border-rose-400/30 bg-rose-500/12 text-rose-200'], 'watch' => ['label'=>'مراقبة','cls'=>'border-amber-400/30 bg-amber-500/12 text-amber-200'], 'mitigated' => ['label'=>'مخفف','cls'=>'border-sky-400/30 bg-sky-500/12 text-sky-200'], 'closed' => ['label'=>'مغلق','cls'=>'border-emerald-400/30 bg-emerald-500/12 text-emerald-200'], ]; $levelMeta = [ 'high' => ['label'=>'خطر عالي','cls'=>'border-rose-400/30 bg-rose-500/12 text-rose-200'], 'mid' => ['label'=>'خطر متوسط','cls'=>'border-amber-400/30 bg-amber-500/12 text-amber-200'], 'low' => ['label'=>'خطر منخفض','cls'=>'border-emerald-400/30 bg-emerald-500/12 text-emerald-200'], ]; $qs = request()->query(); @endphp
{{-- Hero --}}
غرفة إيمان • Risk Map • حلول ومتابعة

خريطة المخاطر

سجّل المخاطر بشكل منظّم: شدة × احتمالية = Score مع سبب جذري وخطة تخفيف ومتابعات — وكل شيء بنمط غرفة إيمان الملحمي.

{{-- Summary --}}
المجموع
{{ (int)($stats['total'] ?? 0) }}
مفتوح
{{ (int)($stats['open'] ?? 0) }}
مراقبة
{{ (int)($stats['watch'] ?? 0) }}
مخفف
{{ (int)($stats['mitigated'] ?? 0) }}
مغلق
{{ (int)($stats['closed'] ?? 0) }}
عالي
{{ (int)($stats['high'] ?? 0) }}
متوسط
{{ (int)($stats['mid'] ?? 0) }}
منخفض
{{ (int)($stats['low'] ?? 0) }}
{{-- Filters + View --}}
{{-- Content --}} @if(($rows->count() ?? 0) === 0)
لا توجد مخاطر ضمن هذه الفلاتر.
@else @if($view === 'cards')
@foreach($rows as $r) @php $st = $statusMeta[$r->status ?? 'open'] ?? $statusMeta['open']; $score = (int)($r->score ?? ((int)($r->severity ?? 3) * (int)($r->likelihood ?? 3))); $lvl = $score >= 16 ? 'high' : ($score >= 9 ? 'mid' : 'low'); $lv = $levelMeta[$lvl] ?? $levelMeta['mid']; $membersArr = []; if (!empty($r->members_json)) { try { $membersArr = json_decode($r->members_json, true) ?: []; } catch (\Throwable $e) { $membersArr = []; } } $ownerMini = collect($membersArr)->pluck('name')->filter()->take(2)->implode('، '); $ownerMini = $ownerMini ?: ($r->owner_name ?? '—'); @endphp
{{ $r->title }}
{{ $r->category ?? '—' }} • مُسجّل: {{ $r->creator_name ?? '—' }}
{{ $st['label'] }}
الشدة
{{ (int)$r->severity }}
الاحتمال
{{ (int)$r->likelihood }}
Score
{{ $score }}
{{ $lv['label'] }} @if((int)($r->followup_needed ?? 0) === 1) بحاجة متابعة @endif
خطة التخفيف: {{ $r->mitigation_plan ?: '—' }}
أصحاب/أعضاء: {{ $ownerMini }}
@csrf
@endforeach
@else
@foreach($rows as $i => $r) @php $st = $statusMeta[$r->status ?? 'open'] ?? $statusMeta['open']; $score = (int)($r->score ?? ((int)($r->severity ?? 3) * (int)($r->likelihood ?? 3))); @endphp @endforeach
# العنوان الحالة الشدة الاحتمال Score الفئة مُسجّل إجراءات
{{ ($rows->firstItem() ?? 1) + $i }}
{{ $r->title }}
{{ $r->mitigation_plan ?: ($r->root_cause ?: '—') }}
{{ $st['label'] }} {{ (int)$r->severity }} {{ (int)$r->likelihood }} {{ $score }} {{ $r->category ?? '—' }} {{ $r->creator_name ?? '—' }}
@csrf
{{ $rows->links() }}
@endif @endif
{{-- مودل إنشاء خطر --}} {{-- مودل تفاصيل --}} {{-- Scoped JS (no globals, no conflicts) --}} @endsection