@extends('admin._layout') @section('title', 'الاشتراكات') @push('head') @endpush @php $statusMeta = [ 'active' => ['label' => 'نشط', 'color' => 'success', 'icon' => 'check'], 'cancelled' => ['label' => 'ملغي', 'color' => 'secondary', 'icon' => 'ban'], 'expired' => ['label' => 'منتهي', 'color' => 'danger', 'icon' => 'calendar-x'], 'pending' => ['label' => 'معلّق', 'color' => 'warning', 'icon' => 'clock'], 'past_due' => ['label' => 'متأخر السداد', 'color' => 'warning', 'icon' => 'alert-circle'], ]; $current = request('status'); $sort = request('sort', 'latest'); @endphp @section('content') {{-- KPI cards --}}
إيرادات شهرية متكررة (MRR)
{{ number_format($stats['mrr'], 0) }} SAR
إيراد هذا الشهر
{{ number_format($stats['this_month_revenue'], 0) }} SAR
تنتهي خلال 14 يوم
{{ number_format($stats['expiring_soon']) }}
اشتراكات نشطة
{{ number_format($stats['active']) }}
{{-- Status filter pills --}}
الكل {{ $statusCounts['_all'] ?? 0 }} @foreach($statusMeta as $key => $meta) {{ $meta['label'] }} {{ $statusCounts[$key] ?? 0 }} @endforeach
{{-- Search + clinic filter --}}
{{-- Table --}}
@if($subscriptions->isEmpty())

لا توجد اشتراكات تطابق الفلاتر

@if(request('q') || request('status') || request('clinic_id')) جرّب تغيير الفلاتر أو عرض الكل. @else ابدأ بإنشاء أول اشتراك. @endif

@if(! (request('q') || request('status') || request('clinic_id'))) @endif
@else
@foreach($subscriptions as $sub) @php $sm = $statusMeta[$sub->status] ?? ['label' => $sub->status, 'color' => 'secondary', 'icon' => 'circle']; $daysLeft = ($sub->expires_at && $sub->expires_at->isFuture()) ? (int) max(0, ceil(now()->diffInDays($sub->expires_at, false))) : null; $countdownColor = $daysLeft === null ? 'secondary' : ($daysLeft <= 3 ? 'danger' : ($daysLeft <= 14 ? 'warning' : 'success')); $clinicName = $sub->clinic?->name ?? '—'; $initials = collect(preg_split('/\s+/u', trim($clinicName))) ->filter()->take(2) ->map(fn ($w) => mb_substr($w, 0, 1)) ->implode('') ?: '?'; @endphp @endforeach
العيادة الباقة المبلغ الفترة المتبقي الحالة المرجع الإجراءات
{{ $initials }}
@if($sub->clinic) {{ $sub->clinic->name }}
{{ $sub->clinic->owner_email }}
@else
العيادة محذوفة
@endif
{{ $sub->plan?->name ?? '—' }} @if($sub->plan)
{{ $sub->plan->duration_days }} يوم
@endif
{{ number_format((float) $sub->amount, 0) }} {{ $sub->currency }}
{{ $sub->started_at?->translatedFormat('j M Y') ?? '—' }}
{{ $sub->expires_at?->translatedFormat('j M Y') ?? '—' }}
@if($daysLeft !== null && $sub->status === 'active') {{ $daysLeft }} يوم @elseif($sub->expires_at && $sub->expires_at->isPast()) منتهي @else @endif {{ $sm['label'] }} @if($sub->payment_reference) {{ $sub->payment_reference }} @else @endif
@if($sub->clinic) @endif @if($sub->status === 'active')
@csrf
@endif
@if($subscriptions->hasPages()) @endif @endif
{{-- ============================================================ --}} {{-- New subscription modal --}} {{-- ============================================================ --}} @endsection @push('scripts') @endpush