{{-- HEADER --}}
{{-- USER CARD --}}
حالة العضوية: {{ $user->membership_status }}
@if($user->isLeft)
مغادر من التيم
@if($user->left_at)
— منذ {{ $user->left_at->format('Y/m/d') }}
@endif
@else
عضو حالي فعّال
@endif
@if($user->account_status !== 'active')
حالة الحساب: {{ $user->account_status }}
@endif
تاريخ الانضمام
{{ $user->joined_at ? $user->joined_at->format('Y/m/d') : 'غير محدد' }}
آخر نشاط مسجّل
{{ $user->last_activity ? $user->last_activity->format('Y/m/d H:i') : 'غير متوفر' }}
الجنس
@if($user->gender === 'male')
ذكر
@elseif($user->gender === 'female')
أنثى
@else
غير محدد
@endif
رقم الهاتف
{{ $user->phone ?: 'غير مسجل' }}
ملخص سريع لأداء العضو
Total Performance Snapshot
إجمالي النقاط
{{ number_format($stats['total_points']) }}
نقاط التقييمات
{{ number_format($stats['evaluation_points']) }}
ساعات الأنشطة
{{ number_format($stats['total_activity_hours'], 1) }}
المسابقات الفائزة
{{ $stats['won_competitions'] }}
{{-- STATS GRID --}}
إجمالي النقاط في النظام
{{ number_format($stats['total_points']) }}
نقاط التقييمات اليومية
{{ number_format($stats['evaluation_points']) }}
إجمالي ساعات الأنشطة
{{ number_format($stats['total_activity_hours'], 1) }}
عدد المسابقات الفائزة
{{ $stats['won_competitions'] }}
{{-- التقييمات اليومية --}}
📋
التقييمات اليومية (آخر 20 تقييم)
رصد دقيق لأداء العضو في التقييمات اليومية، مع ملاحظات المقيمين عند توفرها.
@if($dailyPointsData->count() > 0)
| التاريخ |
النقاط |
المُقيِّم |
ملاحظات التقييم |
@foreach($dailyPointsData->take(20) as $evaluation)
| {{ optional($evaluation->evaluation_date)->format('Y/m/d') ?? 'غير محدد' }} |
{{ $evaluation->total_daily_points }} نقطة
|
{{ optional($evaluation->evaluator)->name ?? 'غير محدد' }} |
{{ $evaluation->evaluator_notes ?: '—' }}
|
@endforeach
| المجموع |
{{ $dailyPointsData->sum('total_daily_points') }} نقطة
|
@if($dailyPointsData->count() > 20)
* تم عرض آخر 20 تقييم فقط من أصل {{ $dailyPointsData->count() }} تقييمٍ موجود في سجل العضو.
@endif
@else
📋
لا توجد تقييمات يومية معتمدة حتى الآن لهذا العضو.
@endif
{{-- الأنشطة الحية --}}
@if(count($activitiesData) > 0)
🎯
الأنشطة الحية ({{ $stats['confirmed_activities'] }} نشاط مؤكد)
الأنشطة المباشرة التي شارك بها العضو، بما في ذلك القيست، البثوث، والجلسات التفاعلية.
@foreach($activitiesData as $type => $activities)
{{ $type }} ({{ $activities->count() }} نشاط)
| العنوان / الوصف |
التاريخ |
المدة (ساعات) |
النقاط |
@if($type === 'قيست')
@foreach($activities as $guest)
| {{ $guest->guest_description ?? 'بدون وصف' }} |
{{ optional($guest->activity_date)->format('Y/m/d') ?? 'غير محدد' }} |
{{ number_format($guest->actual_hours, 2) }} |
{{ $guest->bonus_points ?? 0 }} نقطة
|
@endforeach
@else
@foreach($activities as $activity)
@php
$hours = ($activity->duration_hours ?? 0) + (($activity->duration_minutes ?? 0) / 60);
@endphp
| {{ $activity->title ?? 'بدون عنوان' }} |
{{ optional($activity->scheduled_date)->format('Y/m/d') ?? 'غير محدد' }} |
{{ number_format($hours, 2) }} |
{{ $activity->participant_points ?? 0 }} نقطة
|
@endforeach
@endif
| المجموع |
{{ number_format($totalHoursByActivityType[$type] ?? 0, 2) }} ساعة
|
{{ number_format($activities->sum($type === 'قيست' ? 'bonus_points' : 'participant_points')) }} نقطة
|
@endforeach
@endif
{{-- المسابقات الفائزة --}}
@if($wonCompetitions->count() > 0)
🏆
المسابقات الفائزة ({{ $wonCompetitions->count() }})
| المسابقة |
تاريخ الفوز |
النقاط |
الرتبة الممنوحة |
@foreach($wonCompetitions as $participant)
| {{ optional($participant->competition)->title ?? 'غير محدد' }} |
{{ optional($participant->won_at)->format('Y/m/d') ?? 'غير محدد' }} |
{{ $participant->awarded_points ?? 0 }} نقطة
|
{{ optional($participant->awardedRank)->name ?? 'بدون رتبة' }} |
@endforeach
| المجموع |
{{ $wonCompetitions->sum('awarded_points') }} نقطة
|
@endif
{{-- التكريمات والمكافآت --}}
@if($honorsRewards->count() > 0)
⭐
التكريمات والمكافآت ({{ $honorsRewards->count() }})
| النوع والعنوان |
التاريخ |
النقاط |
الرتبة |
@foreach($honorsRewards as $recipient)
|
{{ $recipient->type === 'honor' ? 'تكريم' : 'مكافأة' }}
{{ $recipient->title ?? 'غير محدد' }}
|
{{ optional($recipient->awarded_at)->format('Y/m/d') ?? 'غير محدد' }} |
@if($recipient->points_awarded && $recipient->points_amount)
{{ $recipient->points_amount }} نقطة
@else
—
@endif
|
@if($recipient->rank_awarded && $recipient->rank_name)
{{ $recipient->rank_name }}
@else
—
@endif
|
@endforeach
| المجموع |
{{ $honorsRewardsPoints }} نقطة |
@endif
{{-- المخالفات --}}
@if($violations->count() > 0)
⚠️
المخالفات والإنذارات ({{ $violations->count() }})
| النوع |
العنوان |
تاريخ التسجيل |
النقاط المخصومة |
@foreach($violations as $violationMember)
|
{{ $violationMember->violation->type === 'warning' ? 'إنذار' : 'مخالفة' }}
|
{{ $violationMember->violation->title ?? 'غير محدد' }} |
{{ optional($violationMember->created_at)->format('Y/m/d') ?? 'غير محدد' }} |
-{{ $violationMember->violation->points_deducted ?? 0 }} نقطة
|
@endforeach
| المجموع |
@php
$totalDeducted = $violations->sum(function ($vm) {
return $vm->violation->points_deducted ?? 0;
});
@endphp
-{{ $totalDeducted }} نقطة
|
@endif
{{-- الغيابات --}}
@if($absences->count() > 0)
📅
سجل الغيابات ({{ $absences->count() }})
| التاريخ |
النوع |
ملاحظات |
@foreach($absences as $absence)
| {{ optional($absence->evaluation_date)->format('Y/m/d') ?? 'غير محدد' }} |
@if($absence->attendance_status === 'absent_without_excuse')
غياب بدون عذر
@else
غياب بعذر
@endif
|
{{ $absence->excuse_reason ?? '—' }}
|
@endforeach
|
بدون عذر:
{{ $absences->where('attendance_status','absent_without_excuse')->count() }}
| بعذر:
{{ $absences->where('attendance_status','absent_with_excuse')->count() }}
|
@endif
{{-- طلبات الغياب --}}
@if($absenceRequests->count() > 0)
📝
طلبات الغياب ({{ $absenceRequests->count() }})
| تاريخ الطلب |
سبب الغياب |
المدة |
الحالة |
ملاحظات الإدارة |
@foreach($absenceRequests as $request)
@php
$days = ($request->from_date && $request->to_date)
? $request->from_date->diffInDays($request->to_date) + 1
: 0;
@endphp
| {{ optional($request->created_at)->format('Y/m/d') ?? 'غير محدد' }} |
{{ $request->excuse_reason ?? 'غير محدد' }} |
{{ $days }} يوم |
@if($request->status === 'approved')
مقبول
@elseif($request->status === 'rejected')
مرفوض
@else
معلّق
@endif
|
{{ $request->admin_notes ?? '—' }}
|
@endforeach
|
مقبولة: {{ $absenceRequests->where('status','approved')->count() }}
| مرفوضة: {{ $absenceRequests->where('status','rejected')->count() }}
| معلّقة: {{ $absenceRequests->where('status','pending')->count() }}
|
@endif
{{-- الرتب الحالية --}}
@if($userRanks->count() > 0)
🎖️
الرتب الحالية ({{ $userRanks->count() }})
| الرتبة |
الوصف |
تاريخ الحصول عليها |
@foreach($userRanks as $rank)
|
@if($rank->icon)
{{ $rank->icon }}
@endif
{{ $rank->name }}
|
{{ $rank->description ?? '—' }} |
{{ optional($rank->awarded_at)->format('Y/m/d') ?? 'غير محدد' }} |
@endforeach
@endif
{{-- FOOTER --}}
تم إنشاء هذا التقرير بواسطة نظام فريق الوفاء الذهبي — وحدة المتابعة والتقييم الإداري
© {{ date('Y') }} جميع الحقوق محفوظة لفريق الوفاء الذهبي