{{-- resources/views/superadmin/proactive/schedules/index.blade.php --}} @extends('layouts.superadmin') @section('title','غرفة الصقر — مواعيد ProActive') @section('page-title','📅 مواعيد فعاليات ProActive — عادي & بلس') @section('content')
{{-- ✅ HERO (ستايل سقراط) --}}
ProActive — لوحة المواعيد الرسمية • غرفة الصقر

لوحة مواعيد ProActive — عادي & بلس

غيّر الحالة إلى نشطة ليتم تسجيل وقت البدء تلقائيًا، ثم إلى منتهية لحساب المدّة وحفظها في قاعدة البيانات وتحليلها في التقارير. أي تعديل/إلغاء لازم يكون بسبب واضح + ملاحظة بالصقر ورولا.

نشطة الآن: {{ $stats['active'] }} قادمة: {{ $stats['upcoming'] }} منتهية/ملغاة: {{ $stats['finished'] + $stats['cancelled'] }}
{{-- ✅ زر فتح المودل مرة ثانية --}}
شروط الاستخدام
تعهد ProActive
* يظهر أول مرة تلقائيًا — وبعدها بتقدر تفتحه من هون.
{{-- ✅ FLASH --}} @if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif {{-- ✅ STATS CARDS (ستايل سقراط) --}}
نشطة الآن
{{ $stats['active'] }}
قادمة
{{ $stats['upcoming'] }}
منتهية / ملغاة
{{ $stats['finished'] + $stats['cancelled'] }}
{{-- ✅ Filters (ستايل سقراط + بدون لمس المنطق) --}}
فلترة
فلاتر البحث عن المواعيد
تفريغ الفلاتر
{{-- ✅ GRID البطاقات (نفس المنطق — بس ستايل أقوى) --}}
@forelse($rows as $item) @php $status = $item->status ?? 'upcoming'; $statusText = ['upcoming'=>'قادمة','active'=>'نشطة','finished'=>'منتهية','cancelled'=>'ملغاة'][$status] ?? $status; $toneRing = match($status){ 'active' => 'ring-cyan-300/60', 'upcoming' => 'ring-emerald-300/60', 'finished' => 'ring-slate-300/60', 'cancelled'=> 'ring-rose-300/60', default => 'ring-slate-300/40', }; $chipClass = match($status){ 'active' => 'bg-cyan-500/10 text-cyan-200 border-cyan-400/25', 'upcoming' => 'bg-emerald-500/10 text-emerald-200 border-emerald-400/25', 'finished' => 'bg-white/5 text-white/80 border-white/10', 'cancelled'=> 'bg-rose-500/10 text-rose-200 border-rose-400/25', default => 'bg-white/5 text-white/80 border-white/10', }; $isPlus = ($item->event_type === 'plus'); @endphp
{{-- رأس البطاقة --}}
{{ $isPlus ? 'ProActive+ (بلس)' : 'ProActive عادية' }}

{{ $item->event_title }}

{{ $statusText }}
{{-- معلومات أساسية --}}
{{ $item->event_date }} @if($item->event_time) {{ \Carbon\Carbon::parse($item->event_time)->format('H:i') }} @endif
{{ $item->platform }}
@if($item->leader_name)
القائد: {{ $item->leader_name }}
@endif
{{-- شريط الوقت / المدّة (نفس منطقك) --}}
@if($status === 'active')
نشطة منذ: —:—
@elseif($status === 'finished') @php $raw = $item->duration_minutes; if ($raw === null || $raw == 0) { if ($item->started_at && $item->finished_at) { $raw = \Carbon\Carbon::parse($item->finished_at) ->diffInMinutes(\Carbon\Carbon::parse($item->started_at)); } else { $raw = 0; } } $mins = (int) round($raw); if ($mins < 0) $mins = abs($mins); if ($mins >= 60) { $hours = intdiv($mins, 60); $rem = $mins % 60; if ($hours === 1) $hoursLabel = 'ساعة واحدة'; elseif ($hours === 2) $hoursLabel = 'ساعتين'; elseif ($hours >= 3 && $hours <= 10) $hoursLabel = $hours.' ساعات'; else $hoursLabel = $hours.' ساعة'; $durationText = $rem > 0 ? ($hoursLabel.' و '.$rem.' دقيقة') : $hoursLabel; } else { $durationText = $mins.' دقيقة'; } @endphp
المدة المحسوبة: {{ $durationText }} *(من وقت البدء إلى وقت الإنهاء)
@else
الجاهزية: ستبدأ عند تغيير الحالة إلى نشطة.
@endif
{{-- أزرار الإجراءات (نفس الفورمز والروتات) --}}
{{-- تغيير الحالة العام --}}
@csrf
{{-- أزرار سريعة --}} @if($status!=='active')
@csrf
@endif @if($status!=='finished')
@csrf
@endif تعديل
@csrf @method('DELETE')
@empty
لا توجد مواعيد بعد. ابدأ بإنشاء أول موعد عبر زر إضافة موعد جديد.
@endforelse
{{-- ترقيم --}} @if($rows->hasPages())
{{ $rows->links() }}
@endif
{{-- ✅ MODAL: تعهد + ملاحظات (معلومات فقط) --}} @php $gateKey = 'proactive_terms_ack_v1'; @endphp {{-- ✅ مؤقّت حي للفعاليات النشطة (كما هو بدون تغيير) --}} {{-- ✅ Gate Script (لا يكسر الصفحة + لا يلمس السكربتات) --}} @endsection