count(); $trial = Company::where('status', 'trial')->count(); $expiring = Company::where('status', 'active') ->whereNotNull('active_until') ->whereDate('active_until', '<=', now()->addDays(7)) ->count(); $mrr = (float) Subscription::where('status', 'paid') ->whereYear('paid_at', date('Y')) ->whereMonth('paid_at', date('m')) ->sum('amount'); $overdue = Subscription::where('status', 'overdue')->count() + Subscription::where('status', 'pending') ->whereNotNull('due_at') ->where('due_at', '<', now()) ->count(); return [ Stat::make('Tenants total', $total) ->description('Toate companiile') ->descriptionIcon('heroicon-m-building-office-2') ->color('primary') ->url(\App\Filament\Central\Resources\CompanyResource::getUrl('index')), Stat::make('Active', $active) ->description("✓ Pe abonament plătit") ->descriptionIcon('heroicon-m-check-circle') ->color('success'), Stat::make('În trial', $trial) ->description($trial > 0 ? 'Posibili clienți noi' : '—') ->descriptionIcon('heroicon-m-clock') ->color('warning'), Stat::make('Expiră < 7 zile', $expiring) ->description($expiring > 0 ? '⚠ Acțiune necesară' : 'Toate ok') ->descriptionIcon('heroicon-m-exclamation-triangle') ->color($expiring > 0 ? 'danger' : 'success'), Stat::make('Venit luna curentă', number_format($mrr, 0, ',', ' ') . ' MDL') ->description('MRR realizat') ->descriptionIcon('heroicon-m-banknotes') ->color('success'), Stat::make('Facturi neplătite', $overdue) ->description($overdue > 0 ? 'Verifică și amintește' : 'Toate plătite') ->descriptionIcon('heroicon-m-exclamation-circle') ->color($overdue > 0 ? 'danger' : 'gray') ->url(\App\Filament\Central\Resources\SubscriptionResource::getUrl('index') . '?activeTab=overdue'), ]; } }