id = $id; } public function updated(string $property): void { if ($property === 'statusFilter') { $this->resetPage(); } } public function with(): array { $campaign = NewsletterCampaign::query() ->with('createdBy:id,name') ->findOrFail($this->id); $recipients = $campaign->recipients() ->with('user:id,name') ->when($this->statusFilter !== '', fn ($query) => $query->where('status', $this->statusFilter)) ->orderBy('id') ->paginate(50); return [ 'campaign' => $campaign, 'recipients' => $recipients, 'filterSummary' => app(CampaignRecipients::class)->describe($campaign->filters ?? []), 'recipientStatuses' => NewsletterRecipientStatus::cases(), // Gesperrte Adressen zählen in keinen Kampagnenzähler — sie // werden aus dem Protokoll abgeleitet. 'suppressedCount' => $campaign->recipients() ->where('status', NewsletterRecipientStatus::Suppressed->value) ->count(), ]; } }; ?>
{{-- ============== PAGE HEADER ============== --}} @if ($campaign->isDraft()) {{ __('Bearbeiten') }} @endif {{ __('Zurück') }} {{-- ============== KPI-Reihe ============== --}}
{{ $campaign->status->label() }} {{ $campaign->sent_at ? __('abgeschlossen :date', ['date' => $campaign->sent_at->format('d.m.Y H:i')]) : __('läuft…') }} {{ __('abgemeldet') }}{{ $suppressedCount > 0 ? ' · '.__(':count gesperrt', ['count' => number_format($suppressedCount)]) : '' }} {{ __('siehe Protokoll') }}
{{-- ============== INHALT ============== --}}
{{ __('Inhalt') }} {{ $campaign->status->label() }}
{{ __('Betreff') }}: {{ $campaign->subject }}
{!! $campaign->sanitizedBody() !!}
{{-- ============== FILTER ============== --}}
{{ __('Empfänger-Auswahl') }}
    @foreach ($filterSummary as $line)
  • {{ $line }}
  • @endforeach

{{ __('Die Liste wurde beim Versandstart eingefroren. Abmeldungen nach dem Start werden beim Versand übersprungen und im Protokoll vermerkt.') }}

{{-- ============== PROTOKOLL ============== --}}
{{ __('Versand-Protokoll') }}
@foreach ($recipientStatuses as $status) @endforeach {{ number_format($recipients->total(), 0, ',', '.') }} {{ __('Einträge') }}
{{ __('Empfänger') }} {{ __('E-Mail') }} {{ __('Status') }} {{ __('Versendet am') }} {{ __('Fehler') }} @forelse ($recipients as $recipient) @if ($recipient->user) {{ $recipient->user->name }} @else {{ __('Gelöschter User') }} @endif {{ $recipient->email }} {{ $recipient->status->label() }} {{ $recipient->sent_at?->format('d.m.Y H:i:s') ?? '—' }} {{ $recipient->error ?? '' }} @empty
{{ $campaign->isDraft() ? __('Noch kein Versand — die Kampagne ist ein Entwurf.') : __('Keine Einträge für diesen Filter.') }}
@endforelse
@if ($recipients->hasPages())
{{ $recipients->links() }}
@endif