{{-- Header --}}
{{-- User Info Card --}}
معلومات العضو
البريد الإلكتروني
{{ $user->email }}
حالة العضوية
{{ $user->membership_status }}
حالة الفريق
@if($user->isLeft)
مغادر ({{ $user->left_at ? $user->left_at->format('Y/m/d') : 'غير محدد' }})
@else
عضو حالي
@endif
{{-- 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)
| {{ $evaluation->evaluation_date->format('Y/m/d') }} |
{{ $evaluation->total_daily_points }} نقطة |
{{ $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 ?? 'بدون وصف' }} |
{{ $guest->activity_date->format('Y/m/d') }} |
{{ number_format($guest->actual_hours, 2) }} |
{{ $guest->bonus_points ?? 0 }} نقطة |
@endforeach
@else
@foreach($activities as $activity)
| {{ $activity->title ?? 'بدون عنوان' }} |
{{ optional($activity->scheduled_date)->format('Y/m/d') ?? 'غير محدد' }} |
{{ number_format(($activity->duration_hours ?? 0) + (($activity->duration_minutes ?? 0) / 60), 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)
| {{ $participant->competition->title ?? 'غير محدد' }} |
{{ optional($participant->updated_at)->format('Y/m/d') ?? 'غير محدد' }} |
{{ $participant->awarded_points ?? 0 }} نقطة |
{{ optional($participant->competition->rank)->name ?? 'بدون رتبة' }} |
@endforeach
| المجموع |
{{ $wonCompetitions->sum('awarded_points') }} نقطة |
@endif
{{-- التكريمات والمكافآت --}}
@if($honorsRewards->count() > 0)
⭐
التكريمات والمكافآت ({{ $honorsRewards->count() }})
| النوع والعنوان |
التاريخ |
النقاط |
الرتب |
@foreach($honorsRewards as $recipient)
|
{{ $recipient->type === 'honor' ? 'تكريم' : 'مكافأة' }}
{{ $recipient->title ?? 'غير محدد' }}
|
{{ $recipient->awarded_at ? $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 ($violationMember) {
return $violationMember->violation->points_deducted ?? 0;
});
@endphp
-{{ $totalDeducted }} نقطة
|
@endif
{{-- الغيابات --}}
@if($absences->count() > 0)
📅
سجل الغيابات ({{ $absences->count() }})
| التاريخ |
النوع |
ملاحظات |
@foreach($absences as $absence)
| {{ $absence->evaluation_date->format('Y/m/d') }} |
{{ $absence->attendance_status === 'absent_without_excuse' ? 'غياب بدون عذر' : 'غياب بعذر' }}
|
{{ $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)
| {{ optional($request->created_at)->format('Y/m/d') ?? 'غير محدد' }} |
{{ $request->excuse_reason ?? 'غير محدد' }} |
{{ optional($request->from_date)->diffInDays($request->to_date) + 1 ?? 0 }} يوم |
@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 ?? '—' }} |
{{ $rank->awarded_at ? $rank->awarded_at->format('Y/m/d') : 'غير محدد' }} |
@endforeach
@endif
{{-- Footer --}}
تم إنشاء هذا التقرير بواسطة نظام فريق الوفاء الذهبي
© {{ date('Y') }} جميع الحقوق محفوظة