{{-- resources/views/advisor/analytics/members-left.blade.php --}} @extends('layouts.advisor') @section('title', 'تحليلات الأعضاء المغادرين') @section('page-title', '📉 تحليلات الأعضاء المغادرين من التيم') @section('content')
{{-- هيدر بسيط يشرح الفكرة --}}

👥 الأعضاء المغادرون — لوحة المستشار

هنا تقدر تراقب من غادر التيم، أسباب المغادرة، والفترات اللي فيها تسرب أعلى عشان تشتغل على حلول وعلاج مبكر.

المستشار: {{ $advisor->name }}
{{ now()->locale('ar')->timezone(config('app.timezone'))->isoFormat('dddd D MMMM YYYY, h:mm a') }}
{{-- فلاتر البحث --}}
{{-- من تاريخ --}}
{{-- إلى تاريخ --}}
{{-- نوع العضوية --}}
{{-- البحث العام --}}
إعادة ضبط
النتائج المعروضة: {{ $members->total() }} عضو مغادر
{{-- كروت إحصائيات سريعة --}}
إجمالي المغادرين
{{ number_format($stats['total_left']) }}
منذ بداية النظام
آخر 30 يوم
{{ number_format($stats['left_last_30']) }}
صورة عامة للشهر الأخير
آخر 7 أيام
{{ number_format($stats['left_last_7']) }}
هل في موجة تسرب حالية؟
الأعضاء الحاليون
{{ number_format($stats['currently_active']) }}
صورة عن حجم التيم الحالي
{{-- قسم التحليلات الجانبية: الترند + الأسباب + نوع العضوية --}}
{{-- الترند الشهري --}}

📊 تسرب الأعضاء حسب الأشهر

آخر أشهر
@php $maxTrend = max($trend->pluck('total')->max() ?? 1, 1); @endphp
@forelse($trend as $item)
{{ \Carbon\Carbon::createFromFormat('Y-m', $item->month)->locale('ar')->isoFormat('MMM YYYY') }}
{{ $item->total }}
@empty
لا يوجد بيانات كافية لعرض الترند حتى الآن.
@endforelse
{{-- الأسباب الأكثر تكراراً --}}

📝 أكثر أسباب المغادرة تكرارًا

Top 5
@forelse($reasons as $reason)
{{ $reason->reason }}
{{ $reason->total }}
@empty
لا توجد أسباب مسجلة حتى الآن.
@endforelse
{{-- توزيع حسب نوع العضوية --}}

🏷️ نوع العضوية قبل المغادرة

@php $totalByStatus = max($byStatus->sum('total'), 1); @endphp
@forelse($byStatus as $row) @php switch ($row->membership_status) { case 'beta': $label = 'عضو تجريبي (بيتا)'; $badgeClass = 'bg-sky-500/20 text-sky-200 border-sky-500/40'; break; case 'official': $label = 'عضو رسمي'; $badgeClass = 'bg-emerald-500/20 text-emerald-200 border-emerald-500/40'; break; case 'moderator': $label = 'مشرف'; $badgeClass = 'bg-indigo-500/20 text-indigo-200 border-indigo-500/40'; break; default: $label = $row->membership_status; $badgeClass = 'bg-gray-500/20 text-gray-200 border-gray-500/40'; } @endphp
{{ $label }}
{{ $row->total }}
@empty
لا توجد بيانات حول نوع العضوية حتى الآن.
@endforelse
{{-- جدول الأعضاء المغادرين --}}

🧾 قائمة الأعضاء المغادرين

يظهر آخر من غادر أولاً
@forelse($members as $member) @empty @endforelse
العضو اليوزر نوع العضوية تاريخ المغادرة السبب (إن وجد)
{{ $member->name }} #{{ $member->id }}
{{ $member->username ?? '—' }} @php switch ($member->membership_status) { case 'beta': $label = 'بيتا'; $cls = 'bg-sky-500/15 text-sky-200 border-sky-500/40'; break; case 'official': $label = 'رسمي'; $cls = 'bg-emerald-500/15 text-emerald-200 border-emerald-500/40'; break; case 'moderator': $label = 'مشرف'; $cls = 'bg-indigo-500/15 text-indigo-200 border-indigo-500/40'; break; default: $label = $member->membership_status; $cls = 'bg-gray-500/15 text-gray-200 border-gray-500/40'; } @endphp {{ $label }} @if($member->left_at) {{ \Carbon\Carbon::parse($member->left_at)->locale('ar')->timezone(config('app.timezone'))->isoFormat('D MMM YYYY، h:mm a') }} @else — @endif
{{ $member->left_reason ?: 'لم يتم تسجيل سبب للمغادرة.' }}
لا يوجد أعضاء مغادرون وفق الفلاتر الحالية.
{{-- ترقيم الصفحات --}}
{{ $members->links() }}
@endsection