feat: Phase 4 - Mailwizz integration with subscriber sync and retry

This commit is contained in:
2026-04-03 22:03:53 +02:00
parent a1d570254e
commit 83e2158383
13 changed files with 983 additions and 133 deletions

View File

@@ -24,10 +24,21 @@
<p class="text-sm text-red-600">{{ $message }}</p>
@enderror
</form>
<a href="{{ route('admin.pages.subscribers.export', $page) }}{{ request()->filled('search') ? '?'.http_build_query(['search' => request('search')]) : '' }}"
class="inline-flex items-center justify-center rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm font-semibold text-slate-700 shadow-sm hover:bg-slate-50">
{{ __('Export CSV') }}
</a>
<div class="flex flex-wrap items-center gap-2">
@if ($unsyncedMailwizzCount > 0)
<form method="post" action="{{ route('admin.pages.subscribers.queue-mailwizz-sync', $page) }}" class="inline"
onsubmit="return confirm(@js(__('Queue Mailwizz sync jobs for all :count not-yet-synced subscribers on this page? Duplicates are skipped if a job is already pending.', ['count' => $unsyncedMailwizzCount])));">
@csrf
<button type="submit" class="inline-flex items-center justify-center rounded-lg bg-indigo-600 px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500">
{{ __('Queue Mailwizz sync') }} ({{ $unsyncedMailwizzCount }})
</button>
</form>
@endif
<a href="{{ route('admin.pages.subscribers.export', $page) }}{{ request()->filled('search') ? '?'.http_build_query(['search' => request('search')]) : '' }}"
class="inline-flex items-center justify-center rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm font-semibold text-slate-700 shadow-sm hover:bg-slate-50">
{{ __('Export CSV') }}
</a>
</div>
</div>
<div class="overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm">