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

modules/order/src/Services/OrderStatusService.php
<?php

namespace Drupal\arch_order\Services;

use Drupal\Component\Utility\Xss;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Entity\EntityTypeManager;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Order status service.
 *
 * @package Drupal\arch_order\Services
 */
class OrderStatusService implements OrderStatusServiceInterface, ContainerInjectionInterface {

  /**
   * Entity Type Manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManager
   */
  private $entityTypeManager;

  /**
   * Order status storage.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface|mixed|object
   */
  private $orderStatusStorage;

  /**
   * Array of order status entities.
   *
   * @var \Drupal\arch_order\Services\OrderStatusServiceInterface[]
   */
  private $orderStatuses;

  /**
   * Constructs an OrderStatusService.
   *
   * @param \Drupal\Core\Entity\EntityTypeManager $entityTypeManager
   *   Entity Type Manager object.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  public function __construct(EntityTypeManager $entityTypeManager) {
    $this->entityTypeManager = $entityTypeManager;
    $this->orderStatusStorage = $this->entityTypeManager->getStorage('order_status');

    $this->orderStatuses = $this->orderStatusStorage->loadMultiple();
    uasort(
      $this->orderStatuses,
      ['\Drupal\arch_order\Entity\OrderStatus', 'sort']
    );
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('entity_type.manager')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function load($orderStatus) {
    $orderStatus = Xss::filter($orderStatus);
    return $this->orderStatusStorage->load($orderStatus);
  }

  /**
   * {@inheritdoc}
   */
  public function getDefaultOrderStatus() {
    $statuses = $this->orderStatusStorage->loadByProperties(['default' => TRUE]);
    if (!empty($statuses)) {
      return current($statuses);
    }

    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getOrderStatuses($locked = self::ALL) {
    if ($locked === self::LOCKED || $locked === self::UNLOCKED) {
      $statuses = $this->orderStatusStorage->loadByProperties(['locked' => ($locked === self::LOCKED)]);
      uasort($statuses, ['\Drupal\arch_order\Entity\OrderStatus', 'sort']);
      return $statuses;
    }

    return $this->orderStatuses;
  }

}

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

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