@extends('layouts.superadmin')
@section('content')
@php
use Carbon\Carbon;
@endphp
{{-- تنبيه نجاح --}}
@if(session('success'))
@endif
@if(session('error'))
@endif
{{-- هيدر ملحمي لصفحة التأكيد --}}
{{-- زخارف --}}
غرفة الصقر — إدارة حضور اللايفات
من هنا يتم تأكيد حالة اللايفات لليوم المحدد، احتساب النقاط بشكل عادل، توثيق الأعذار،
وتسجيل سجلّ دقيق لكل إجراء يتم على حضور اللايفات داخل التيم.
{{-- تلميح صغير --}}
تذكير: تغيير حالة أي لايف يقوم مباشرة بتعديل نقاط العضو وتسجيل الحركة في سجلات غرفة الصقر.
{{-- فلاتر البحث --}}
{{-- نسخ جدول اللايفات لليوم/الأيام القادمة --}}
@php
$copyUsers = \App\Models\User::where('account_status','active')
->orderByRaw('COALESCE(name,username) ASC')
->get(['id','name','username']);
@endphp
{{-- KPIs --}}
مؤكد: {{ $kpis['confirmed'] }} • عذر: {{ $kpis['excuse'] }} • بدون: {{ $kpis['noexcuse'] }}
كل لايف غير محسوم يؤثر لاحقاً على تقييم حضور العضو.
مؤكد: {{ $month['confirmed'] }} • بانتظار المتابعة: {{ $month['pending'] }}
حضر: +4 •
مع عذر: 0 •
بدون عذر: -2
النقاط تطبَّق تلقائياً على تقييم العضو في النظام.
{{-- كروت اللايفات --}}
@if($streams->isEmpty())
لا يوجد لايفات لهذا اليوم بحسب الفلاتر الحالية.
@else
@foreach($streams as $live)
@php
$u = $live->user;
$name = $u->name ?: $u->username;
$hours = round(($live->duration_hours ?? 0) + (($live->duration_minutes ?? 0)/60), 2);
$timeText = $live->scheduled_time
? Carbon::parse($live->scheduled_time)->format('H:i')
: '—';
$statusLabel = match($live->status) {
'confirmed' => 'مؤكد',
'missed_excuse' => 'مع عذر',
'missed_no_excuse' => 'بدون عذر',
default => 'غير مؤكد',
};
$statusClass = match($live->status) {
'confirmed' => 'bg-emerald-100 text-emerald-800 dark:bg-emerald-900/40 dark:text-emerald-200',
'missed_excuse' => 'bg-amber-100 text-amber-800 dark:bg-amber-900/40 dark:text-amber-200',
'missed_no_excuse' => 'bg-rose-100 text-rose-800 dark:bg-rose-900/40 dark:text-rose-200',
default => 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-100',
};
$isProactive = str_contains((string)($live->description ?? ''), '[PROACTIVE_SCHEDULE_ID=')
|| (strcasecmp((string)($live->slot_label ?? ''), 'ProActive') === 0);
@endphp
{{-- الهيدر: العضو + الصورة + وقت اللايف --}}
{{ $name }}
@if($live->is_sahra)
🔥 سهرة
@endif
#{{ $u->id }}
{{ $timeText }}
{{ $live->slot_label ?: '—' }}
{{-- معلومات سريعة وسط الكرت --}}
النوع
@if($live->type==='guests') قستات
@elseif($live->type==='tours') تحديات
@else كلاهما
@endif
المدة
{{ $hours }} ساعة
الحالة
{{ $statusLabel }} ({{ (int)($live->points_earned ?? 0) }})
{{-- أزرار الإجراءات --}}
اختر الحالة الصحيحة حسب حضور العضو لهذا اللايف.
@endforeach
@endif
{{-- فوتر ملحمي يشرح فلسفة تأكيد اللايفات --}}
🧾 كيف تستخدم صفحة تأكيد اللايفات؟
- اختر اليوم المطلوب من الفلاتر، ثم راجع قائمة اللايفات واحدًا تلو الآخر.
- استخدم زر حضر عند تأكيد حضور اللايف فعليًا.
- في حال وجود عذر حقيقي، استخدم زر عذر واكتب السبب بالتفصيل.
- إن لم يحضر العضو ولا يوجد مبرر مقنع، استخدم زر بدون لتسجيل الغياب بدون عذر.
- الحذف مخصص للحالات التقنية فقط (خطأ بإدخال اللايف، عضو غير صحيح، أو تكرار).
⚖️ ملاحظات مهمة عن العدالة في التقييم
- قرار الحالة (حضر / عذر / بدون) يؤثر مباشرة على نقاط العضو وسجله داخل فريق الوفاء الذهبي.
- الهدف من النظام هو العدالة والتنظيم وليس العقاب لمجرد العقاب.
- الأعذار يجب أن تكون واضحة ومكتوبة، لأن النظام يحفظها كمرجع مستقبلي عند تقييم العضو.
- يفضّل توثيق الأنماط المتكررة (غيابات متتالية بدون عذر) قبل اتخاذ أي قرار إداري أكبر.
صفحة تأكيد اللايفات — جزء من منظومة غرفة الصقر لمتابعة الحضور داخل
فريق الوفاء الذهبي.
{{-- Modal: Excuse --}}