{{-- ========================================================= HEADER ========================================================== --}}

LAPORAN PERGERAKAN MEMBER

Periode {{ $yearFrom }} - {{ $yearTo }}
Dicetak pada: {{ now()->format('d/m/Y H:i') }}
{{-- ========================================================= SUMMARY ========================================================== --}}
MEMBER BARU
{{ number_format($totalNew ?? 0, 0, ',', '.') }}
TOTAL MEMBER
{{ number_format($lastTotal ?? 0, 0, ',', '.') }}
MEMBER AKTIF
{{ number_format($lastActive ?? 0, 0, ',', '.') }}
MEMBER NON AKTIF
{{ number_format($lastInactive ?? 0, 0, ',', '.') }}
{{-- ========================================================= GRAFIK ========================================================== --}}
Grafik Pergerakan Member
Member Baru, Total Member dan Member Aktif
@if (isset($monthlyData) && $monthlyData->count()) @php /* * Cari nilai maksimum untuk skala grafik. * * Grafik mengambil nilai terbesar dari: * - new_member * - total_member * - active_member */ $maxChartValue = 0; foreach ($monthlyData as $chartRow) { $maxChartValue = max( $maxChartValue, (int) ($chartRow['new_member'] ?? 0), (int) ($chartRow['total_member'] ?? 0), (int) ($chartRow['active_member'] ?? 0) ); } /* * Hindari pembagian dengan 0. */ if ($maxChartValue <= 0) { $maxChartValue = 1; } /* * Pembulatan skala agar grafik lebih rapi. */ $chartStep = ceil($maxChartValue / 5); if ($chartStep <= 0) { $chartStep = 1; } $chartMax = $chartStep * 5; @endphp
{{-- GRID --}}
{{-- Y AXIS --}}
{{ number_format($chartMax, 0, ',', '.') }}
{{ number_format($chartStep * 4, 0, ',', '.') }}
{{ number_format($chartStep * 3, 0, ',', '.') }}
{{ number_format($chartStep * 2, 0, ',', '.') }}
{{ number_format($chartStep, 0, ',', '.') }}
0
{{-- BAR --}}
@foreach ($monthlyData as $chartRow) @php $newValue = (int) ($chartRow['new_member'] ?? 0); $totalValue = (int) ($chartRow['total_member'] ?? 0); $activeValue = (int) ($chartRow['active_member'] ?? 0); $newHeight = ($newValue / $chartMax) * 100; $totalHeight = ($totalValue / $chartMax) * 100; $activeHeight = ($activeValue / $chartMax) * 100; /* * Ambil nama bulan. * Untuk periode multi tahun, tampilkan: * Jan 2026 */ $periodLabel = $chartRow['period'] ?? '-'; if ( isset($chartRow['month']) && isset($chartRow['year']) ) { $periodLabel = \Carbon\Carbon::create( (int) $chartRow['year'], (int) $chartRow['month'], 1 )->format('M Y'); } @endphp
{{-- MEMBER BARU --}}
@if ($newValue > 0)
{{ number_format($newValue, 0, ',', '.') }}
@endif
{{-- TOTAL MEMBER --}}
@if ($totalValue > 0)
{{ number_format($totalValue, 0, ',', '.') }}
@endif
{{-- MEMBER AKTIF --}}
@if ($activeValue > 0)
{{ number_format($activeValue, 0, ',', '.') }}
@endif
{{ $periodLabel }}
@endforeach
{{-- LEGEND --}}
Member Baru Total Member Member Aktif
@else
Tidak ada data untuk ditampilkan pada grafik.
@endif
{{-- ========================================================= REKAP BULANAN ========================================================== --}}
Rekap Pergerakan Member Bulanan
@forelse ($monthlyData as $index => $row) @empty @endforelse
No Periode Member Baru Total Member Member Aktif Non Aktif
{{ $index + 1 }} {{ $row['period'] ?? '-' }} {{ number_format($row['new_member'] ?? 0, 0, ',', '.') }} {{ number_format($row['total_member'] ?? 0, 0, ',', '.') }} {{ number_format($row['active_member'] ?? 0, 0, ',', '.') }} {{ number_format($row['inactive_member'] ?? 0, 0, ',', '.') }}
Tidak ada data pergerakan member pada periode yang dipilih.
TOTAL MEMBER BARU {{ number_format($totalNew ?? 0, 0, ',', '.') }}
{{-- ========================================================= REKAP TAHUNAN ========================================================== --}} @if (isset($yearlyData) && $yearlyData->count())
Rekap Pergerakan Member Tahunan
@foreach ($yearlyData as $row) @endforeach
Tahun Member Baru Total Member Member Aktif Member Non Aktif
{{ $row['year'] ?? '-' }} {{ number_format($row['new_member'] ?? 0, 0, ',', '.') }} {{ number_format($row['total_member'] ?? 0, 0, ',', '.') }} {{ number_format($row['active_member'] ?? 0, 0, ',', '.') }} {{ number_format($row['inactive_member'] ?? 0, 0, ',', '.') }}
@endif {{-- ========================================================= FOOTER ========================================================== --}}