37 lines
1.1 KiB
PHP
37 lines
1.1 KiB
PHP
<?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,
|
|
};
|
|
}
|
|
}
|