@extends($layout) @section('title', 'سجل العلامات') @push('styles') @endpush @section('content') @php $totalPositive = $records->where('points', '>', 0)->sum('points'); $totalNegative = abs($records->where('points', '<', 0)->sum('points')); // ✅ FIX: احسب الساعات فقط للأنشطة التي status = confirmed // واستبعد الغياب بعذر وبدون عذر $totalHours = $records->filter(function($record) { // فقط الأنشطة المباشرة والقيست if (!in_array($record->source_type, ['live_activity', 'guest'])) { return false; } // للأنشطة المباشرة: تحقق من أن status = confirmed وليس غياب if ($record->source_type === 'live_activity') { $status = $record->details['status'] ?? null; // استبعد الغياب بعذر وبدون عذر if (in_array($status, ['absent_with_excuse', 'absent_without_excuse'])) { return false; } return $status === 'confirmed'; } // القيست دائمًا تُحسب ساعاتها إذا كانت معتمدة return true; })->sum('hours'); @endphp
{{-- HERO --}}
سجل العلامات — تتبّع النقاط والساعات

سجل العلامات

عرض وتتبع جميع النقاط والساعات المسجّلة مع فلترة ذكية. الساعات محسوبة فقط للحضور الفعلي.

تقارير لحظية فلترة + بحث كروت مرتبة
{{-- Side mini card --}}
ملخص سريع
إجمالي السجلات
{{ $records->total() }}
إجمالي الساعات
{{ number_format($totalHours, 1) }}h
نقاط +
+{{ number_format($totalPositive) }}
نقاط -
-{{ number_format($totalNegative) }}
ملاحظة: الساعات هنا = حضور فعلي فقط (Confirmed).
{{-- STATS (نفس partials) --}}

📊 الإحصائيات

نفس بياناتك — بس ضمن ستايل سقراط.

@include('general.score-records.partials._stats-card', [ 'title' => 'إجمالي السجلات', 'value' => $records->total(), 'icon' => '', 'iconBg' => 'bg-blue-50' ]) @include('general.score-records.partials._stats-card', [ 'title' => 'النقاط الإيجابية', 'value' => '+' . number_format($totalPositive), 'valueColor' => 'text-green-600', 'icon' => '', 'iconBg' => 'bg-green-50' ]) @include('general.score-records.partials._stats-card', [ 'title' => 'النقاط السلبية', 'value' => '-' . number_format($totalNegative), 'valueColor' => 'text-red-600', 'icon' => '', 'iconBg' => 'bg-red-50' ]) @include('general.score-records.partials._stats-card', [ 'title' => 'إجمالي الساعات', 'value' => number_format($totalHours, 1) . ' ساعة', 'subtitle' => 'فقط الحضور الفعلي', 'valueColor' => 'text-purple-600', 'icon' => '', 'iconBg' => 'bg-purple-50' ])
{{-- FILTERS (نفس partial) --}}

🎛️ الفلاتر

اختَر العضو/النوع/الحالة/الوقت…

{{-- الفلاتر المحسنة مع إضافة فلتر حالة العضو (مغادر/متواجد) والبحث بالاسم --}} @include('general.score-records.partials._filter-form', [ 'action' => route('score-records.index'), 'users' => $users ?? [], 'showUserFilter' => !auth()->user()->hasRole('member') ])
{{-- RECORDS --}}

🧾 السجلات

كروت مرتبة — قابلة للتصفح.

@if($records->isEmpty())

لا توجد سجلات

جرّب تغيير الفلاتر أو توسيع البحث.

@else
@foreach($records as $record) @include('general.score-records.partials._record-card', ['record' => $record]) @endforeach
{{ $records->links() }}
@endif
{{-- FOOTER --}}
سجل العلامات — ستايل سقراط ✨
@push('scripts') @endpush @endsection