commerce_xero-8.x-1.x-dev/src/CommerceXeroData.php

src/CommerceXeroData.php
<?php

namespace Drupal\commerce_xero;

use Drupal\Core\TypedData\ComplexDataInterface;

/**
 * A compact model for tracking strategy, data object and payment.
 */
class CommerceXeroData implements CommerceXeroDataInterface {

  /**
   * Strategy entity ID.
   *
   * @var string
   */
  protected string $strategyId;

  /**
   * Commerce payment entity ID.
   *
   * @var int|string
   */
  protected int|string $paymentId;

  /**
   * Typed data object.
   *
   * @var \Drupal\Core\TypedData\ComplexDataInterface|null
   */
  protected ?ComplexDataInterface $data;

  /**
   * Execution state.
   *
   * @var string
   */
  protected string $state;

  /**
   * The poison count.
   *
   * @var int
   */
  public $count;

  /**
   * Initialize method.
   *
   * @param string $strategyId
   *   The strategy ID.
   * @param int|string $paymentId
   *   The payment ID.
   * @param \Drupal\Core\TypedData\ComplexDataInterface|null $data
   *   The typed data object.
   * @param string $state
   *   The execution state: "process" or "send", but not "immediate".
   */
  public function __construct(string $strategyId, int|string $paymentId, ?ComplexDataInterface $data = NULL, string $state = 'process') {
    $this->strategyId = $strategyId;
    $this->paymentId = $paymentId;
    $this->data = $data;
    $this->state = $state;
    $this->count = 0;
  }

  /**
   * {@inheritdoc}
   */
  public function getStrategyEntityId(): string {
    return $this->strategyId;
  }

  /**
   * {@inheritdoc}
   */
  public function getPaymentEntityId(): int {
    return $this->paymentId;
  }

  /**
   * {@inheritdoc}
   */
  public function getData(): ComplexDataInterface {
    return $this->data;
  }

  /**
   * {@inheritdoc}
   */
  public function setData(ComplexDataInterface $data): void {
    $this->data = $data;
  }

  /**
   * {@inheritdoc}
   */
  public function getExecutionState(): string {
    return $this->state;
  }

  /**
   * {@inheritdoc}
   */
  public function setExecutionState($state = 'process'): void {
    if (!in_array($state, ['process', 'send', 'poison'])) {
      throw new \InvalidArgumentException('Illegal value for execution state');
    }
    $this->state = $state;
  }

  /**
   * {@inheritdoc}
   */
  public function incrementCount(): void {
    $this->count = $this->count + 1;
  }

  /**
   * {@inheritdoc}
   */
  public function exceededPoisonThreshhold(): bool {
    return $this->count > self::POISON_THRESHHOLD;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc