@php $fmt = function ($minutes) use ($decimalFormat) { if ($decimalFormat) { $negative = $minutes < 0; return ($negative ? '-' : '') . number_format(abs($minutes) / 60, 2, ',', '.') . ' h.'; } return tbFormat($minutes); }; $num = fn($value) => number_format($value, 0, ',', '.'); $logoPath = theme_email_logo_file(); $logo = file_exists($logoPath) ? 'data:image/png;base64,' . base64_encode(file_get_contents($logoPath)) : null; @endphp
|
{{ platform_name() }}
{{ $title['header'] }}@if (!empty($appliedFilters)) {{-- A table, not inline spans: dompdf ignores flex and gap, so cells are the only reliable way to separate these. --}}
{{ $title['sub'] }}
@endif
|
@if ($logo)
{{ ($partnerScoped ?? false) ? __('Partner profiles') : __('Profiles') }} {{ $num($stats['profileCount']) }} |
{{ __('Transactions') }} {{ $num($stats['economic']['transaction_count']) }} |
{{ __('Total volume') }} {{ $fmt($stats['economic']['total_volume']) }} |
{{ __('Total balance') }} {{ $fmt($stats['balance']) }} |
|
{{ __('Incomplete') }}
@php
$incompleteCount = (int) ($stats['online']['incomplete'] ?? 0);
$profileTotal = (int) ($stats['profileCount'] ?? 0);
@endphp
{{ $profileTotal > 0 ? number_format(100 * $incompleteCount / $profileTotal, 1, ',', '.') . '%' : '-' }}
|
|||
| {{ __('Transaction type') }} | {{ __('Count') }} | {{ __('Volume') }} |
|---|---|---|
| {{ $type['type_name'] }} | {{ $num($type['count']) }} | {{ $fmt($type['volume']) }} |
| {{ ($partnerScoped ?? false) ? __('Partner profile type') : __('Profile type') }} | {{ __('Total') }} | {{ __('Active') }} | {{ __('Inactive') }} | {{ __('Recent active < 30d') }} |
|---|---|---|---|---|
| {{ __($typeName) }} | {{ $num($row['total']) }} | {{ $num($row['active']) }} | {{ $num($row['inactive']) }} | {{ $row['recent_logins'] === null ? '-' : $num($row['recent_logins']) }} |
|
{{ $chart['label'] }}
|
@endforeach
@if ($registrationCharts->count() === 1)
@endif |
{{ __('Posts') }} {{ $num($stats['engagement']['posts']) }} |
{{ __('Calls') }} {{ $num($stats['engagement']['calls']) }} |
{{ __('Reactions') }} {{ $num($stats['engagement']['reactions']) }} |
{{ __('Messages') }} {{ $num($stats['engagement']['messages']) }} |
|
{{ $chart['label'] }}
|
@endforeach
@if ($row->count() === 1)
@endif |
{{ __('Current balance of the :count user and organization profiles in the selection, in hours. Banks are excluded.', ['count' => $stats['balance_distribution']['profiles_counted']]) }}
@endif {{-- One per row, full width: these histograms carry ~27 banded labels, which are unreadable at half the page width. --}} @foreach ($balanceCharts as $chart){{ $networkLegend['view_caption'] }}
@endif {{-- Counts from the classifier, which runs in the browser: captured at export time and carried through the session, since the server cannot recompute them. --}} @if (!empty($networkSubtext)){{ $networkSubtext }}
@endif @if (!empty($networkSettings)) {{-- A printed graph carries no controls, so name the settings that produced it. --}}|
{{ $item['label'] }} {{ $item['value'] }} |
@endforeach
{{ __(':profiles excluded from this table.', ['profiles' => implode(', ', $stats['distribution']['excluded_profiles'])]) }}
@endif| {{ ($partnerScoped ?? false) ? __('Partner profile') : __('Profile') }} | {{ __('Type') }} | {{ __('Paid') }} | {{ __('Received') }} | {{ __('Paid volume') }} | {{ __('Received volume') }} | {{ __('Trading partners') }} | {{ __('Transactions') }} |
|---|---|---|---|---|---|---|---|
| {{ ($anonymize ?? false) ? $profile['anonymous_name'] : $profile['name'] }} | {{ __($profile['type']) }} | {{ $num($profile['paid_count']) }} | {{ $num($profile['received_count']) }} | {{ $fmt($profile['paid_volume']) }} | {{ $fmt($profile['received_volume']) }} | {{ $num($profile['partners'] ?? 0) }} | {{ $num($profile['count']) }} |
{{ __(':profiles excluded from this table.', ['profiles' => implode(', ', $stats['distribution']['excluded_profiles'])]) }}
@endif| {{ __('Location') }} | {{ __('Paid') }} | {{ __('Received') }} | {{ __('Paid volume') }} | {{ __('Received volume') }} | {{ __('Transactions') }} |
|---|---|---|---|---|---|
| {{ $row['label'] ?: __('Location not specified') }} | {{ $num($row['paid_count']) }} | {{ $num($row['received_count']) }} | {{ $fmt($row['paid_volume']) }} | {{ $fmt($row['received_volume']) }} | {{ $num($row['count']) }} |
{{ __('How many profiles stood marked as inactive at the end of each month, counted cumulatively. Profiles marked as inactive before the period are included in the starting figure.') }}
@foreach (\App\Services\StatsService::chartLegendNotes() as $note){{ $note }}
@endforeach