@extends('layouts.superadmin') @section('title','مشاكل وحلول — غرفة إيمان الملكاوي') @section('content') @php use Illuminate\Support\Str; $members = collect($members ?? [])->map(fn($m) => is_array($m) ? (object)$m : $m); $membersMap = $members->keyBy('id'); $decode = function ($json) { if (!$json) return []; $arr = json_decode($json, true); return is_array($arr) ? $arr : []; }; $safeAvatar = function ($avatar) { if (!$avatar) return null; if (Str::startsWith($avatar, ['http://','https://','//'])) return $avatar; if (Str::startsWith($avatar, ['storage/','/storage/'])) return Str::startsWith($avatar,'/') ? $avatar : '/'.$avatar; if (Str::startsWith($avatar, ['public/'])) return '/storage/'.Str::after($avatar,'public/'); if (Str::contains($avatar,'/')) return '/'.$avatar; return null; }; $severityMeta = [ 'low' => ['t'=>'منخفضة','cls'=>'border-emerald-400/20 bg-emerald-500/10 text-emerald-200','ic'=>'fa-leaf'], 'medium' => ['t'=>'متوسطة','cls'=>'border-sky-400/20 bg-sky-500/10 text-sky-200','ic'=>'fa-wave-square'], 'high' => ['t'=>'عالية','cls'=>'border-amber-400/20 bg-amber-500/10 text-amber-100','ic'=>'fa-triangle-exclamation'], 'critical' => ['t'=>'حرجة','cls'=>'border-rose-400/20 bg-rose-500/10 text-rose-100','ic'=>'fa-skull-crossbones'], ]; $statusMeta = [ 'open' => ['t'=>'مفتوحة','cls'=>'border-white/10 bg-white/5 text-white/80','ic'=>'fa-circle-dot'], 'in_progress' => ['t'=>'قيد العمل','cls'=>'border-cyan-400/20 bg-cyan-500/10 text-cyan-200','ic'=>'fa-spinner'], 'resolved' => ['t'=>'تم الحل','cls'=>'border-emerald-400/20 bg-emerald-500/10 text-emerald-200','ic'=>'fa-circle-check'], 'blocked' => ['t'=>'معلّقة','cls'=>'border-amber-400/20 bg-amber-500/10 text-amber-100','ic'=>'fa-ban'], ]; $fmtSize = function ($bytes) { $b = (float)($bytes ?? 0); if ($b <= 0) return null; $units = ['B','KB','MB','GB']; $i=0; while ($b>=1024 && $i<3) { $b/=1024; $i++; } return number_format($b,2).$units[$i]; }; @endphp
{{-- HERO --}}
مشاكل + حلول + سجلات توثيق

مشاكل وحلول

سجّل المشكلة، وضّح الحل، وراقب التقدم بسجل واضح — والضغط على أي عنصر يفتح تفاصيله في Drawer.
الفترة: {{ $from }} → {{ $to }}
{{-- FLASH --}} @if(session('success'))
{{ session('success') }}
@endif @if($errors->any())
في أخطاء:
    @foreach($errors->all() as $e)
  • {{ $e }}
  • @endforeach
@endif {{-- STATS --}}
عدد العناصر
{{ $stats['total'] ?? 0 }}
مفتوحة/قيد العمل
{{ $stats['open'] ?? 0 }}
تم الحل
{{ $stats['resolved'] ?? 0 }}
حرجة
{{ $stats['critical'] ?? 0 }}
بحاجة متابعة
{{ $stats['with_followup'] ?? 0 }}
مع مرفقات
{{ $stats['with_attachments'] ?? 0 }}
{{-- LIST --}} @if($viewMode === 'cards')
@forelse($issues as $i) @php $sev = $i->severity ?? 'medium'; $st = $i->status ?? 'open'; $sevM = $severityMeta[$sev] ?? $severityMeta['medium']; $stM = $statusMeta[$st] ?? $statusMeta['open']; $memberIds = $decode($i->member_ids ?? null); $att = $decode($i->attachments ?? null); $dur = $i->duration_minutes ? round(($i->duration_minutes/60),2).' ساعة' : '—'; $issueAt = $i->issue_at ?? ($i->created_at ?? null); $pFrom = $i->period_from ?? '—'; $pTo = $i->period_to ?? '—'; @endphp @empty
لا يوجد عناصر بعد.
@endforelse
@else
جدول المشاكل والحلول
@forelse($issues as $i) @php $sev = $i->severity ?? 'medium'; $st = $i->status ?? 'open'; $sevM = $severityMeta[$sev] ?? $severityMeta['medium']; $stM = $statusMeta[$st] ?? $statusMeta['open']; $att = $decode($i->attachments ?? null); $dur = $i->duration_minutes ? round(($i->duration_minutes/60),2).'س' : '—'; $issueAt = $i->issue_at ?? ($i->created_at ?? null); $pFrom = $i->period_from ?? '—'; $pTo = $i->period_to ?? '—'; @endphp {{-- Template للتفاصيل --}} @empty @endforelse
العنوان الوقت الخطورة الحالة الفترة المدة متابعة مرفقات
{{ $i->issue_title }} {{ $issueAt ?? '—' }} {{ $sevM['t'] }} {{ $stM['t'] }} {{ $pFrom }} → {{ $pTo }} {{ $dur }} {{ ($i->has_followup ?? 0) == 1 ? 'نعم' : 'لا' }} {{ is_array($att) ? count($att) : 0 }}
لا يوجد عناصر بعد.
@endif {{-- LOGS TABLE --}}
السجلات (آخر 80)
@forelse($logs as $l) @empty @endforelse
الوقت الإجراء Issue ID Actor IP
{{ $l->created_at ?? '—' }} {{ $l->action ?? '—' }} {{ $l->issue_id ?? '—' }} {{ $l->actor_id ?? '—' }} {{ $l->ip ?? '—' }}
لا يوجد سجلات.
{{-- DRAWER: DETAILS --}} {{-- MODAL: CREATE --}}
@endsection