<?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\Options;
use Automattic\WooCommerce\GoogleListingsAndAds\API\Google\SiteVerification;
/**
* Class MerchantAccountState
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\Options
*/
class MerchantAccountState extends AccountState {
/** @var int The number of seconds of delay to enforce between site verification and site claim. */
public const MC_DELAY_AFTER_CREATE = 5;
/**
* Return the option name.
*
* @return string
*/
protected function option_name(): string {
return OptionsInterface::MERCHANT_ACCOUNT_STATE;
}
/**
* Return a list of account creation steps.
*
* @return string[]
*/
protected function account_creation_steps(): array {
return [ 'set_id', 'verify', 'link', 'claim' ];
}
/**
* Determine whether the site has already been verified.
*
* @return bool True if the site is marked as verified.
*/
public function is_site_verified(): bool {
$current_options = $this->options->get( OptionsInterface::SITE_VERIFICATION );
return ! empty( $current_options['verified'] ) && SiteVerification::VERIFICATION_STATUS_VERIFIED === $current_options['verified'];
}
/**
* Calculate the number of seconds to wait after creating a sub-account and
* before operating on the new sub-account (MCA link and website claim).
*
* @return int
*/
public function get_seconds_to_wait_after_created(): int {
$state = $this->get( false );
$created_timestamp = $state['set_id']['data']['created_timestamp'] ?? 0;
$seconds_elapsed = time() - $created_timestamp;
return max( 0, self::MC_DELAY_AFTER_CREATE - $seconds_elapsed );
}
}