@php $user = auth()->user(); if ($user->hasRole('super-admin')) { $layout = 'layouts.superadmin'; } elseif ($user->hasRole('advisor')) { $layout = 'layouts.advisor'; } elseif ($user->hasRole('moderator')) { $layout = 'layouts.moderator'; } else { $layout = 'layouts.member'; } @endphp @extends($layout) @section('title','القستات المشتركة') @section('content')
{{-- HERO --}}
صفحة شخصية حسب مشاركتك

القستات المشتركة

تظهر لك فقط القستات التي كنت فيها هوست أو قاست. القستات المرفوضة لا تظهر.

العناصر
{{ $submissions->total() }}
{{-- ✅ مقطع الإحصائيات + أهمية الإثبات (ملخص سريع للعضو) --}} @php $col = $submissions instanceof \Illuminate\Pagination\AbstractPaginator ? $submissions->getCollection() : collect($submissions); $meId = auth()->id(); // احصائيات شخصية (فقط القستات المعروضة/المفلترة) $totalItems = $submissions->total() ?? $col->count(); $hostCount = $col->filter(function($s) use ($meId){ $hosts = (array)($s->host_participants ?? []); return in_array($meId, $hosts, true); })->count(); $guestCount = $col->filter(function($s) use ($meId){ $guests = (array)($s->guest_participants ?? []); return in_array($meId, $guests, true); })->count(); $hoursTotal = (float) $col->sum(function($s){ return (float)($s->actual_hours ?? 0); }); // إثباتاتك (حسب اللي جهزناه بالكنترول: proof_url + proof_state) $withProof = $col->filter(fn($s) => !empty($s->proof_url) || (($s->proof_state ?? '') === 'ok'))->count(); $missingProofName = $col->filter(fn($s) => (($s->proof_state ?? '') === 'missing_file'))->count(); // اسم موجود لكن الملف مش موجود $noProof = max(0, $col->count() - $withProof); $proofRate = $col->count() ? round(($withProof / $col->count()) * 100) : 0; @endphp {{-- Filters --}}
مسح
أهمية الإثبات

الإثبات هو “دليل ساعاتك”

كل قست بدون صورة إثبات = ساعاتك غير مثبتة بشكل رسمي داخل النظام. الهدف حماية حقك، وتوثيق تواجدك، ومنع أي لخبطة أو ظلم لاحقًا.

نسبة الإثبات ضمن النتائج الحالية
{{ $proofRate }}%
{{-- بطاقات إحصائيات شخصية --}}
إجمالي القستات
{{ $totalItems }}
ساعاتك (ضمن النتائج)
{{ number_format($hoursTotal, 2) }}
قستات بإثبات
{{ $withProof }}
بدون إثبات
{{ $noProof }}
{{-- تفاصيل دورك --}}
هوست: {{ $hostCount }} ضيف: {{ $guestCount }} @if($missingProofName > 0) تنبيه: يوجد {{ $missingProofName }} قست “اسم إثبات موجود لكن الصورة غير موجودة” @endif
{{-- ملاحظة قصيرة جداً --}}
✅ نعرض فقط القستات التي شاركت بها (هوست/ضيف) — والمرفوض لا يظهر. 🖼️ صورة الإثبات هي اللي تثبت ساعاتك فعليًا داخل النظام.
{{-- LIST --}} @if($submissions->count())
@foreach($submissions as $s) @php $isApproved = $s->status === 'approved'; $badge = 'bg-emerald-500/15 border-emerald-400/25 text-emerald-200'; $roleChip = 'bg-white/10 border-white/15 text-white/85'; $meRole = $s->me_role_in_guest ?? 'other'; $roleText = $meRole === 'host' ? 'أنت (هوست)' : ($meRole === 'guest' ? 'أنت (قاست)' : 'مشارك'); if($meRole === 'host') $roleChip = 'bg-sky-500/15 border-sky-400/25 text-sky-200'; if($meRole === 'guest') $roleChip = 'bg-fuchsia-500/15 border-fuchsia-400/25 text-fuchsia-200'; @endphp
مقبول {{ $roleText }}
{{-- هوست (مش مستلم) --}}
الهوست: {{ $s->host_names ?? 'غير محدد' }}
التاريخ: {{ optional($s->activity_date)->format('Y-m-d') }} الوقت: {{ $s->activity_time ?? '—' }} ساعات: {{ $s->actual_hours ?? '0.00' }}
رقم
#{{ $s->id }}
{{-- Proof --}}
صورة الإثبات
@if(($s->proof_state ?? 'none') === 'missing') اسم الصورة موجود لكن الملف غير موجود @endif
@if(!empty($s->proof_url)) @if(!empty($s->proof_uploaded_at))
تاريخ رفع الإثبات: {{ optional($s->proof_uploaded_at)->format('Y-m-d H:i') }}
@endif @else
لا توجد صورة إثبات
@endif
{{-- Comments disabled --}}
تعليقات (معطلة حالياً)
سيتم تفعيل التعليقات لاحقاً…
@endforeach
{{ $submissions->withQueryString()->links() }}
@else
لا يوجد بيانات ضمن هذه الفلاتر.
@endif
{{-- Image Modal --}} @endsection