*/ private array $cart_data; /** * @var \DateTimeImmutable */ private \DateTimeImmutable $occurred_at; /** * Constructor. * * @param int $abandoned_cart_id Abandoned cart record ID. * @param array $cart_data Cart contents and metadata. * @param string|null $occurred_at Original event occurrence timestamp. */ public function __construct( int $abandoned_cart_id, array $cart_data = array(), ?string $occurred_at = null ) { $this->abandoned_cart_id = $abandoned_cart_id; $this->cart_data = $cart_data; $utc = wp_timezone(); try { $this->occurred_at = ! empty( $occurred_at ) ? new \DateTimeImmutable( $occurred_at, $utc ) : new \DateTimeImmutable( 'now', $utc ); } catch ( \Exception $exception ) { $this->occurred_at = new \DateTimeImmutable( 'now', $utc ); } } /** * {@inheritdoc} */ public static function getLabel(): string { return __( 'Cart Abandoned', 'afroit-messaging-workflows' ); } /** * {@inheritdoc} */ public function getName(): string { return self::NAME; } /** * {@inheritdoc} */ public function getPayload(): array { return array( 'abandoned_cart_id' => $this->abandoned_cart_id, 'cart_data' => $this->cart_data, ); } /** * {@inheritdoc} */ public function getOccurredAt(): \DateTimeImmutable { return $this->occurred_at; } /** * Get abandoned cart ID. * * @return int */ public function getAbandonedCartId(): int { return $this->abandoned_cart_id; } /** * Get cart data. * * @return array */ public function getCartData(): array { return $this->cart_data; } }