vendor/shopware/core/Checkout/Payment/PaymentMethodCollection.php line 11

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Checkout\Payment;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
  4. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  5. /**
  6.  * @extends EntityCollection<PaymentMethodEntity>
  7.  */
  8. class PaymentMethodCollection extends EntityCollection
  9. {
  10.     public function filterByActiveRules(SalesChannelContext $salesChannelContext): PaymentMethodCollection
  11.     {
  12.         return $this->filter(
  13.             function (PaymentMethodEntity $paymentMethod) use ($salesChannelContext) {
  14.                 if ($paymentMethod->getAvailabilityRuleId() === null) {
  15.                     return true;
  16.                 }
  17.                 return \in_array($paymentMethod->getAvailabilityRuleId(), $salesChannelContext->getRuleIds(), true);
  18.             }
  19.         );
  20.     }
  21.     /**
  22.      * @return list<string>
  23.      */
  24.     public function getPluginIds(): array
  25.     {
  26.         return $this->fmap(function (PaymentMethodEntity $paymentMethod) {
  27.             return $paymentMethod->getPluginId();
  28.         });
  29.     }
  30.     public function filterByPluginId(string $id): self
  31.     {
  32.         return $this->filter(function (PaymentMethodEntity $paymentMethod) use ($id) {
  33.             return $paymentMethod->getPluginId() === $id;
  34.         });
  35.     }
  36.     /**
  37.      * Sorts the selected payment method first
  38.      * If a different default payment method is defined, it will be sorted second
  39.      * All other payment methods keep their respective sorting
  40.      */
  41.     public function sortPaymentMethodsByPreference(SalesChannelContext $context): void
  42.     {
  43.         $ids array_merge(
  44.             [$context->getPaymentMethod()->getId(), $context->getSalesChannel()->getPaymentMethodId()],
  45.             $this->getIds()
  46.         );
  47.         $this->sortByIdArray($ids);
  48.     }
  49.     public function getApiAlias(): string
  50.     {
  51.         return 'payment_method_collection';
  52.     }
  53.     protected function getExpectedClass(): string
  54.     {
  55.         return PaymentMethodEntity::class;
  56.     }
  57. }