feat: Phase 4 - Mailwizz integration with subscriber sync and retry
This commit is contained in:
@@ -6,7 +6,10 @@ namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Admin\IndexSubscriberRequest;
|
||||
use App\Http\Requests\Admin\QueueMailwizzSyncRequest;
|
||||
use App\Models\PreregistrationPage;
|
||||
use App\Services\DispatchUnsyncedMailwizzSyncJobsService;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\View\View;
|
||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
|
||||
@@ -21,7 +24,42 @@ class SubscriberController extends Controller
|
||||
->paginate(25)
|
||||
->withQueryString();
|
||||
|
||||
return view('admin.subscribers.index', compact('page', 'subscribers'));
|
||||
$page->loadMissing('mailwizzConfig');
|
||||
$unsyncedMailwizzCount = $page->mailwizzConfig !== null
|
||||
? (int) $page->subscribers()->where('synced_to_mailwizz', false)->count()
|
||||
: 0;
|
||||
|
||||
return view('admin.subscribers.index', compact('page', 'subscribers', 'unsyncedMailwizzCount'));
|
||||
}
|
||||
|
||||
public function queueMailwizzSync(
|
||||
QueueMailwizzSyncRequest $request,
|
||||
PreregistrationPage $page,
|
||||
DispatchUnsyncedMailwizzSyncJobsService $dispatcher
|
||||
): RedirectResponse {
|
||||
$page->loadMissing('mailwizzConfig');
|
||||
|
||||
if ($page->mailwizzConfig === null) {
|
||||
return redirect()
|
||||
->route('admin.pages.subscribers.index', $page)
|
||||
->with('error', __('This page has no Mailwizz integration.'));
|
||||
}
|
||||
|
||||
$count = $dispatcher->dispatch($page->id);
|
||||
|
||||
if ($count === 0) {
|
||||
return redirect()
|
||||
->route('admin.pages.subscribers.index', $page)
|
||||
->with('status', __('There are no unsynced subscribers to queue for this page.'));
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('admin.pages.subscribers.index', $page)
|
||||
->with('status', trans_choice(
|
||||
'Queued Mailwizz sync for :count subscriber.|Queued Mailwizz sync for :count subscribers.',
|
||||
$count,
|
||||
['count' => $count]
|
||||
));
|
||||
}
|
||||
|
||||
public function export(IndexSubscriberRequest $request, PreregistrationPage $page): StreamedResponse
|
||||
|
||||
Reference in New Issue
Block a user