{{-- resources/views/advisor/analytics/attendance.blade.php --}} @extends('layouts.advisor') @section('title', 'تحليلات الحضور والغياب') @section('page-title', '📊 تحليلات الحضور والغياب') @section('content') @php $totalRecords = $stats['total_records'] ?? 0; $presentDays = $stats['present_days'] ?? 0; $excusedAbsences = $stats['excused_absences'] ?? 0; $unexcusedAbsences = $stats['unexcused_absences'] ?? 0; $attendanceRate = $stats['attendance_rate'] ?? 0; $absenceRate = $stats['absence_rate'] ?? 0; @endphp
{{-- هيدر ناعم --}}
لوحة مراقبة الالتزام — حضور & غياب

تحليلات الحضور والغياب في التيم

من هنا تتابع مستوى التزام الأعضاء: من يحافظ على الحضور؟ من يغيب بعذر؟ ومن يحتاج زيارة لطيفة من المستشار ليذكّره بروح العائلة الذهبية 💛.

المستشار المسؤول
{{ $advisor->name }}
{{ now()->locale('ar')->timezone(config('app.timezone'))->isoFormat('dddd D MMM YYYY, h:mm a') }}
{{-- فلاتر --}}
{{-- من تاريخ --}}
{{-- إلى تاريخ --}}
{{-- حالة الحضور --}}
{{-- الجنس --}}
{{-- بحث باسم العضو --}}
إعادة ضبط
مجموع سجلات الحضور/الغياب في الفترة: {{ $totalRecords }}
{{-- كروت إحصائيات رئيسية --}}
أيام الحضور
{{ $presentDays }}

كل يوم تم تسجيله كـ حضور في الفترة المحددة.

غياب بعذر
{{ $excusedAbsences }}

حالات غياب تم قبول عذرها من الإدارة / المشرفين.

غياب بدون عذر
{{ $unexcusedAbsences }}

هذه الفئة الأخطر، وغالباً تحتاج متابعة خاصة من المستشار.

نسبة الالتزام
{{ $attendanceRate }}%

نسبة الحضور من إجمالي الأيام المسجلة. نسبة الغياب (بعذر + بدون عذر): {{ $absenceRate }}%

{{-- جدول تفصيلي لكل عضو --}}

🧾 ملخص الحضور والغياب لكل عضو

مرتبة حسب عدد الغيابات بدون عذر (من الأعلى للأقل)
@forelse($attendanceRows as $row) @php $total = $row->present_days + $row->excused_absences + $row->unexcused_absences; $risk = 'low'; if ($row->unexcused_absences >= 10) { $risk = 'high'; } elseif ($row->unexcused_absences >= 5) { $risk = 'medium'; } $riskLabel = match($risk) { 'high' => 'خطر عالي', 'medium' => 'متوسط', default => 'منخفض', }; $riskClass = match($risk) { 'high' => 'bg-rose-500/10 text-rose-700 border-rose-400/70 dark:bg-rose-500/15 dark:text-rose-100 dark:border-rose-400/60', 'medium' => 'bg-amber-500/10 text-amber-700 border-amber-400/70 dark:bg-amber-500/15 dark:text-amber-100 dark:border-amber-400/60', default => 'bg-emerald-500/10 text-emerald-700 border-emerald-400/70 dark:bg-emerald-500/15 dark:text-emerald-100 dark:border-emerald-400/60', }; $typeLabel = match($row->membership_status) { 'beta' => 'عضو بيتا', 'official' => 'عضو رسمي', 'official-member' => 'عضو رسمي', 'moderator' => 'مشرف', default => $row->membership_status ?? 'عضو', }; @endphp {{-- العضو --}} {{-- النوع --}} {{-- حضور --}} {{-- بعذر --}} {{-- بدون عذر --}} {{-- مستوى الخطورة --}} {{-- آخر تقييم --}} @empty @endforelse
العضو النوع حضور بعذر بدون عذر مستوى الخطورة آخر تقييم
{{ $row->name ?? '—' }} رقم العضو: #{{ $row->user_id }}
الصفة: {{ $typeLabel }}
الجنس: @if($row->gender === 'male') ذكر @elseif($row->gender === 'female') أنثى @else غير محدد @endif
{{ $row->present_days }} {{ $row->excused_absences }} {{ $row->unexcused_absences }} @if($risk === 'high') @elseif($risk === 'medium') @else @endif {{ $riskLabel }} @if($row->last_evaluation_date) {{ \Carbon\Carbon::parse($row->last_evaluation_date)->locale('ar')->timezone(config('app.timezone'))->isoFormat('D MMM YYYY') }} @else — @endif
لا يوجد سجلات حضور/غياب وفق الفلاتر الحالية.
{{-- ترقيم الصفحات --}}
{{ $attendanceRows->links() }}
@endsection