arch-8.x-1.x-dev/modules/order/src/OrderAddressData.php

modules/order/src/OrderAddressData.php
<?php

namespace Drupal\arch_order;

/**
 * Order address data.
 *
 * @package Drupal\arch_order
 */
class OrderAddressData implements OrderAddressDataInterface {

  /**
   * Address data.
   *
   * @var array
   */
  protected $values = [
    'order_id' => NULL,
    'address_type' => NULL,
    'country_code' => NULL,
    'administrative_area' => NULL,
    'locality' => NULL,
    'dependent_locality' => NULL,
    'postal_code' => NULL,
    'sorting_code' => NULL,
    'address_line1' => NULL,
    'address_line2' => NULL,
    'organization' => NULL,
    'given_name' => NULL,
    'additional_name' => NULL,
    'family_name' => NULL,
    'tax_id' => NULL,
    'phone' => NULL,
  ];

  /**
   * OrderAddressData constructor.
   *
   * @param array $data
   *   Order address data.
   */
  public function __construct(array $data = []) {
    foreach ($data as $field_name => $value) {
      $this->set($field_name, $value);
    }
  }

  /**
   * Magic getter.
   *
   * @param string $name
   *   Field name.
   *
   * @return mixed
   *   Value.
   */
  public function __get($name) {
    return $this->get($name);
  }

  /**
   * Magic setter.
   *
   * Required because when we use this class as target class for DB fetch
   * it will try to set values as public properties.
   *
   * @param string $name
   *   Field name.
   * @param mixed $value
   *   Field value.
   */
  public function __set($name, $value) {
    $this->set($name, $value);
  }

  /**
   * {@inheritdoc}
   */
  public function toArray() {
    return $this->values;
  }

  /**
   * Camelize string.
   *
   * @param string $str
   *   String to camelize.
   *
   * @return string
   *   Camelized string.
   */
  protected static function camelize($str) {
    $cleaned_string = strtr($str, ['_' => ' ', '.' => '_ ', '\\' => '_ ']);
    $normalized_words = ucwords($cleaned_string);

    return strtr($normalized_words, [' ' => '']);
  }

  /**
   * Get getter method name for field.
   *
   * @param string $field_name
   *   Field name.
   *
   * @return string
   *   Method name.
   */
  protected static function getGetterMethod($field_name) {
    return self::camelize('get_' . $field_name);
  }

  /**
   * Get setter method name for field.
   *
   * @param string $field_name
   *   Field name.
   *
   * @return string
   *   Method name.
   */
  protected static function getSetterMethod($field_name) {
    return self::camelize('set_' . $field_name);
  }

  /**
   * {@inheritdoc}
   */
  public function get($field) {
    $method = self::getGetterMethod($field);
    if (method_exists($this, $method)) {
      return $this->{$method}();
    }
    return $this->values[$field] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function set($field_name, $value) {
    $method = self::getSetterMethod($field_name);
    if (method_exists($this, $method)) {
      return $this->{$method}($value);
    }

    if (array_key_exists($field_name, $this->values)) {
      $this->values[$field_name] = $value;
    }

    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getOrderId() {
    return $this->values['order_id'];
  }

  /**
   * {@inheritdoc}
   */
  public function getAddressType() {
    return $this->values['address_type'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getCountryCode() {
    return $this->values['country_code'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getAdministrativeArea() {
    return $this->values['administrative_area'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getLocality() {
    return $this->values['locality'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getDependentLocality() {
    return $this->values['dependent_locality'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getPostalCode() {
    return $this->values['postal_code'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getSortingCode() {
    return $this->values['sorting_code'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getAddressLine1() {
    return $this->values['address_line1'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getAddressLine2() {
    return $this->values['address_line2'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getAddressLine3() {
    return $this->values['address_line3'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getOrganization() {
    return $this->values['organization'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getGivenName() {
    return $this->values['given_name'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getAdditionalName() {
    return $this->values['additional_name'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getFamilyName() {
    return $this->values['family_name'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getTaxId() {
    return $this->values['tax_id'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getPhone() {
    return $this->values['phone'] ?? NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function setOrderId($value) {
    if (empty($value)) {
      throw new \InvalidArgumentException('Order ID is required!');
    }
    $this->values['order_id'] = (int) $value;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setAddressType($value = NULL) {
    $this->values['address_type'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setCountryCode($value = NULL) {
    $this->values['country_code'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setAdministrativeArea($value = NULL) {
    $this->values['administrative_area'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setLocality($value = NULL) {
    $this->values['locality'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setDependentLocality($value = NULL) {
    $this->values['dependent_locality'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setPostalCode($value = NULL) {
    $this->values['postal_code'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setSortingCode($value = NULL) {
    $this->values['sorting_code'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setAddressLine1($value = NULL) {
    $this->values['address_line1'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setAddressLine2($value = NULL) {
    $this->values['address_line2'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setOrganization($value = NULL) {
    $this->values['organization'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setGivenName($value = NULL) {
    $this->values['given_name'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setAdditionalName($value = NULL) {
    $this->values['additional_name'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setFamilyName($value = NULL) {
    $this->values['family_name'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setTaxId($value = NULL) {
    $this->values['tax_id'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function setPhone($value = NULL) {
    $this->values['phone'] = isset($value) ? (string) $value : NULL;
    return $this;
  }

}

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

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