| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- <?php
- namespace common\helpers;
- final class GuestDeclarationDraftStatus
- {
- const DRAFT = 'draft';
- const PENDING_PAYMENT = 'pending_payment';
- const PROCESSING = 'processing';
- const COMPLETED = 'completed';
- const PAYMENT_FAILED = 'payment_failed';
- const PAYMENT_INITIALIZING = 'payment_initializing';
- const EXPIRED = 'expired';
- const MANUAL_REVIEW = 'manual_review';
- private const TRANSITIONS = [
- self::DRAFT => [self::PAYMENT_INITIALIZING, self::EXPIRED],
- self::PENDING_PAYMENT => [self::PROCESSING, self::PAYMENT_FAILED, self::EXPIRED, self::MANUAL_REVIEW],
- self::PAYMENT_INITIALIZING => [self::DRAFT, self::PENDING_PAYMENT, self::MANUAL_REVIEW],
- self::PROCESSING => [self::COMPLETED, self::MANUAL_REVIEW],
- self::PAYMENT_FAILED => [self::PAYMENT_INITIALIZING, self::EXPIRED],
- self::COMPLETED => [],
- self::EXPIRED => [],
- self::MANUAL_REVIEW => [],
- ];
- public static function all(): array
- {
- return array_keys(self::TRANSITIONS);
- }
- public static function canTransition(string $from, string $to): bool
- {
- return in_array($to, self::TRANSITIONS[$from] ?? [], true);
- }
- public static function isExpired(?int $expiresAt, ?int $now = null): bool
- {
- return $expiresAt !== null && $expiresAt <= ($now ?? time());
- }
- }
|