@extends('layouts.app') @push('style') @endpush @section('content') @php $legacyRole = strtolower(trim((string) auth()->user()->role)); $canCreateSubscription = auth()->user()->can('create subscription') || auth()->user()->hasAnyRole(['user', 'member', 'owner', 'admin', 'super admin']) || in_array($legacyRole, ['user', 'member', 'owner', 'admin', 'super admin'], true); $isSharedExpired = function ($item) { return in_array((string) $item->status, ['expired', 'cancelled'], true) || ($item->ends_at && $item->ends_at->isPast()); }; $isSubscribedExpired = function ($item) { $subscription = $item->sharedSubscription; return in_array((string) $item->status, ['expired', 'cancelled'], true) || ($item->expires_at && $item->expires_at->isPast()) || ($subscription && in_array((string) $subscription->status, ['expired', 'cancelled'], true)) || ($subscription && $subscription->ends_at && $subscription->ends_at->isPast()); }; $sortEntries = function ($entries) { return $entries ->sortByDesc(function ($entry) { $stamp = $entry['item']->updated_at ?? $entry['item']->created_at; return $stamp ? $stamp->timestamp : 0; }) ->values(); }; $sharedEntries = $sortEntries(($sharedSubscriptions ?? collect()) ->map(fn ($item) => [ 'type' => 'shared', 'item' => $item, 'status_group' => $isSharedExpired($item) ? 'expired' : 'active', ])); $subscribedEntries = $sortEntries(($joinedSubscriptions ?? collect()) ->map(fn ($item) => [ 'type' => 'subscribed', 'item' => $item, 'status_group' => $isSubscribedExpired($item) ? 'expired' : 'active', ])); $allEntries = $sortEntries($sharedEntries->concat($subscribedEntries)); $entriesByPrimaryGroup = [ 'all' => $allEntries, 'shared' => $sharedEntries, 'subscribed' => $subscribedEntries, ]; $primaryTabs = [ 'all' => [ 'label' => 'All', 'count' => $allEntries->count(), ], 'shared' => [ 'label' => 'Shared', 'count' => $sharedEntries->count(), ], 'subscribed' => [ 'label' => 'Subscribed', 'count' => $subscribedEntries->count(), ], ]; $statusCountsByGroup = collect($entriesByPrimaryGroup) ->mapWithKeys(fn ($entries, $groupKey) => [ $groupKey => [ 'active' => $entries->where('status_group', 'active')->count(), 'expired' => $entries->where('status_group', 'expired')->count(), ], ]) ->all(); $shareActionUrl = route('subscriptions.create'); $subscribeActionUrl = route('subscriptions.index'); @endphp
@if(session('status'))
{{ session('status') }}
@endif
@foreach($primaryTabs as $sectionKey => $section) @endforeach
@foreach(['active' => 'Active', 'expired' => 'Expired'] as $statusKey => $statusLabel) @endforeach
@foreach($allEntries as $entry) @endforeach
@endsection @push('script') @endpush