feat: MailJet list handling with DOI, webhook receiver and API endpoint

addresses #869cut134
This commit is contained in:
Björn Fromme
2026-04-29 09:51:57 +02:00
parent df7885ca1c
commit e4ef2f7adc
46 changed files with 3389 additions and 322 deletions
@@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
namespace App\Model;
class NewsletterSubscriptionRequestResult
{
public const STATE_SUBSCRIBED = 'subscribed';
public const STATE_PENDING_CONFIRMATION = 'pending_confirmation';
public const STATE_CONFIRMATION_REQUESTED = 'confirmation_requested';
public const LIST_STATE_PENDING = 'pending';
public const LIST_STATE_ALREADY_REGISTERED = 'already_registered';
public const LIST_STATE_SUCCESS = 'success';
/**
* @param list<int> $listIds
* @param array<int, string> $listStates
*/
public function __construct(
public readonly string $email,
public readonly array $listIds,
public readonly string $state,
public readonly bool $confirmationRequested,
public readonly array $listStates = [],
) {
}
public function stateForList(int $listId): string
{
return $this->listStates[$listId] ?? match ($this->state) {
self::STATE_SUBSCRIBED => self::LIST_STATE_SUCCESS,
default => self::LIST_STATE_PENDING,
};
}
}