xero-8.x-2.x-dev/src/Plugin/DataType/TrackingOption.php

src/Plugin/DataType/TrackingOption.php
<?php

namespace Drupal\xero\Plugin\DataType;

use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\Attribute\DataType;
use Drupal\xero\TypedData\Definition\TrackingOptionDefinition;

/**
 * Xero Tracking Option type for BankTransaction line items.
 *
 * @see https://developer.xero.com/documentation/api/banktransactions
 *
 * @DataType(
 *   id = "xero_tracking_option",
 *   label = @Translation("Xero Tracking Option"),
 *   definition_class = "\Drupal\xero\TypedData\Definition\TrackingOptionDefinition",
 *   list_class = "\Drupal\xero\Plugin\DataType\XeroItemList"
 * )
 */
#[DataType(
  id: 'xero_tracking_option',
  label: new TranslatableMarkup('Xero Tracking Option'),
  definition_class: TrackingOptionDefinition::class,
  list_class: XeroItemList::class,
)]
class TrackingOption extends XeroItemBase {

  /**
   * {@inheritdoc}
   */
  public static $xero_name = 'TrackingCategory';

  /**
   * {@inheritdoc}
   */
  public static $plural_name = 'Tracking';

  /**
   * {@inheritdoc}
   */
  public static $label = 'Option';

  /**
   * {@inheritdoc}
   */
  public function view(): array {
    $option = $this->getOption();
    $name = $this->getNameValue();

    return [
      '#markup' => $option . ': ' . $name,
    ];
  }

  /**
   * Gets the option value.
   *
   * @return string
   *   The value to return.
   *
   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
   */
  protected function getOption(): string {
    $option = $this->get('Option');
    return $option->getValue() ? $option->getValue() : 'N/A';
  }

  /**
   * Gets the name value.
   *
   * @return string
   *   The value to return.
   *
   * @throws \Drupal\Core\TypedData\Exception\MissingDataException
   */
  protected function getNameValue(): string {
    $name = $this->get('Name');
    return $name->getValue() ? $name->getValue() : 'N/A';
  }

}

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

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