{{-- Header & Filters --}}

تقارير العمليات

{{ match($period) { 'today' => 'اليوم', 'yesterday' => 'الأمس', 'last_7_days' => 'آخر 7 أيام', 'last_30_days' => 'آخر 30 يوم', default => 'كل الوقت', } }}
{{-- Filters Bar --}}
{{-- Period Filter --}}
@if($isAdmin) {{-- Team Filter --}}
@endif {{-- Employee Filter --}}
{{-- Custom Date Range --}}
إعادة تعيين
{{-- KPI Cards --}}
@php // Tailwind's build-time scanner reads this file as PLAIN TEXT — it does // not run PHP — so a class built by interpolating the color name into // the middle of a Tailwind class never appears in the file as a // literal, complete utility, and Tailwind never compiles it. Two of // these eight badges (violet, orange) had NO color at all in // production for exactly this reason; the others only happened to // work because the same shade combination was ALSO used literally // elsewhere on this page. Every class below is written out in full so // Tailwind can always find it, regardless of what else the page // happens to contain. $kpiBadgeClasses = [ 'blue' => 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-300', 'emerald' => 'bg-emerald-50 dark:bg-emerald-900/20 text-emerald-700 dark:text-emerald-300', 'rose' => 'bg-rose-50 dark:bg-rose-900/20 text-rose-700 dark:text-rose-300', 'amber' => 'bg-amber-50 dark:bg-amber-900/20 text-amber-700 dark:text-amber-300', 'orange' => 'bg-orange-50 dark:bg-orange-900/20 text-orange-700 dark:text-orange-300', 'indigo' => 'bg-indigo-50 dark:bg-indigo-900/20 text-indigo-700 dark:text-indigo-300', 'cyan' => 'bg-cyan-50 dark:bg-cyan-900/20 text-cyan-700 dark:text-cyan-300', 'violet' => 'bg-violet-50 dark:bg-violet-900/20 text-violet-700 dark:text-violet-300', ]; $kpiCards = [ ['key' => 'total_conversations', 'label' => 'إجمالي المحادثات', 'icon' => '💬', 'color' => 'blue'], ['key' => 'open_conversations', 'label' => 'المحادثات المفتوحة', 'icon' => '🟢', 'color' => 'emerald'], ['key' => 'closed_conversations', 'label' => 'المحادثات المغلقة', 'icon' => '🔴', 'color' => 'rose'], ['key' => 'pending_conversations', 'label' => 'في الانتظار', 'icon' => '⏳', 'color' => 'amber'], ['key' => 'unread_conversations', 'label' => 'غير مقروءة', 'icon' => '🔔', 'color' => 'orange'], ['key' => 'incoming_messages', 'label' => 'الرسائل الواردة', 'icon' => '📥', 'color' => 'indigo'], ['key' => 'outgoing_messages', 'label' => 'الردود المرسلة', 'icon' => '📤', 'color' => 'cyan'], ['key' => 'active_employees', 'label' => 'الموظفين النشطين', 'icon' => '👤', 'color' => 'violet'], ]; @endphp @foreach($kpiCards as $card)
{{ $card['icon'] }} {{ $card['label'] }}
{{ number_format($kpis[$card['key']]) }}
@endforeach
{{-- Chart: Message Volume --}} @php $msgTotal = max($kpis['incoming_messages'] + $kpis['outgoing_messages'], 1); $inPct = round(($kpis['incoming_messages'] / $msgTotal) * 100); $outPct = round(($kpis['outgoing_messages'] / $msgTotal) * 100); $convTotal = max(array_sum($conversationStatus), 1); @endphp

📊 حجم الرسائل

الواردة {{ number_format($kpis['incoming_messages']) }} ({{ $inPct }}%)
المرسلة {{ number_format($kpis['outgoing_messages']) }} ({{ $outPct }}%)

📈 حالة المحادثات

@php // Same fix as the KPI cards above: every class fully spelled out so // Tailwind's static scanner can find it, instead of assembling it // from a variable it cannot see through. $statusTileClasses = [ 'emerald' => ['tile' => 'bg-emerald-50 dark:bg-emerald-900/20 border border-emerald-200 dark:border-emerald-800', 'value' => 'text-emerald-700 dark:text-emerald-300', 'label' => 'text-emerald-600 dark:text-emerald-400', 'bar' => 'bg-emerald-500'], 'amber' => ['tile' => 'bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-800', 'value' => 'text-amber-700 dark:text-amber-300', 'label' => 'text-amber-600 dark:text-amber-400', 'bar' => 'bg-amber-500'], 'rose' => ['tile' => 'bg-rose-50 dark:bg-rose-900/20 border border-rose-200 dark:border-rose-800', 'value' => 'text-rose-700 dark:text-rose-300', 'label' => 'text-rose-600 dark:text-rose-400', 'bar' => 'bg-rose-500'], 'blue' => ['tile' => 'bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800', 'value' => 'text-blue-700 dark:text-blue-300', 'label' => 'text-blue-600 dark:text-blue-400', 'bar' => 'bg-blue-500'], 'gray' => ['tile' => 'bg-gray-50 dark:bg-gray-900/20 border border-gray-200 dark:border-gray-800', 'value' => 'text-gray-700 dark:text-gray-300', 'label' => 'text-gray-600 dark:text-gray-400', 'bar' => 'bg-gray-500'], ]; @endphp
@foreach(['open' => ['مفتوحة', 'emerald'], 'pending' => ['في الانتظار', 'amber'], 'closed' => ['مغلقة', 'rose'], 'assigned' => ['معينة', 'blue'], 'unassigned' => ['غير معينة', 'gray']] as $status => $info) @php $pct = round((($conversationStatus[$status] ?? 0) / $convTotal) * 100); $c = $statusTileClasses[$info[1]]; @endphp
{{ number_format($conversationStatus[$status] ?? 0) }}
{{ $info[0] }}
@endforeach
{{-- Employee Performance --}}

أداء الموظفين

{{ count($employeePerformance) }} موظف
@forelse($employeePerformance as $emp) @empty @endforelse
الموظف الفريق معين له مفتوح مغلق رسائل واردة ردود مرسلة آخر نشاط متوسط وقت الرد
{{ $emp['name'] }} {{ $emp['team'] }} {{ number_format($emp['assigned_count']) }} {{ number_format($emp['open_count']) }} {{ number_format($emp['closed_count']) }} {{ number_format($emp['incoming_count']) }} {{ number_format($emp['outgoing_count']) }} {{ $emp['last_activity'] }} {{ $emp['avg_response_time'] ?? '-' }}
لا يوجد بيانات للعرض
{{-- Team Performance --}}

أداء الفرق

@forelse($teamPerformance as $team) @empty @endforelse
الفريق المشرف الموظفين إجمالي المحادثات مفتوحة مغلقة في الانتظار
{{ $team['name'] }} {{ $team['supervisor'] }} {{ number_format($team['employee_count']) }} {{ number_format($team['total_conversations']) }} {{ number_format($team['open_count']) }} {{ number_format($team['closed_count']) }} {{ number_format($team['pending_count']) }}
لا يوجد بيانات للعرض
{{-- Assignment Report --}}

سجل التكليفات

آخر 50
@forelse($assignments as $assignment) @empty @endforelse
# المحادثة الموظف معين بواسطة السبب تاريخ التكليف الحالة
#{{ $assignment['id'] }} #{{ $assignment['conversation_id'] }} {{ $assignment['employee'] }} {{ $assignment['assigned_by'] }} {{ $assignment['reason'] }} {{ $assignment['assigned_at'] }} @if($assignment['status'] === 'Active') نشط @else غير نشط @endif
لا يوجد بيانات للعرض
{{-- Export Placeholder --}}
📥

تصدير التقارير

تصدير البيانات إلى Excel / CSV سيكون متاحاً قريباً