locator = $locator; } public static function getSubscribedServices(): array { return [ UpdateOrderStatusCommand::class => UpdateOrderStatusHandlerInterface::class, UpdateOrderAddressDeliveryCommand::class => UpdateOrderAddressDeliveryHandlerInterface::class, UpdateOrderTrackingNumbersCommand::class => UpdateOrderTrackingNumbersHandlerInterface::class, UpdateBasketCommand::class => UpdateBasketHandlerInterface::class, UnbindBasketCommand::class => UnbindBasketHandlerInterface::class, /* widget v2 */ GetBasketBindingKeyCommand::class => '?' . GetBasketBindingKeyHandlerInterface::class, GetOrderConfirmationUrlCommand::class => '?' . GetOrderConfirmationUrlHandlerInterface::class, /* merchant API */ ConfirmBasketBindingCommand::class => '?' . ConfirmBasketBindingHandlerInterface::class, DeleteBasketBindingCommand::class => '?' . DeleteBasketBindingHandlerInterface::class, GetBasketCommand::class => '?' . GetBasketHandlerInterface::class, MerchantApi\Command\UpdateBasketCommand::class => '?' . MerchantApi\Handler\UpdateBasketHandlerInterface::class, CreateOrderCommand::class => '?' . CreateOrderHandlerInterface::class, GetOrderCommand::class => '?' . GetOrderHandlerInterface::class, UpdateOrderCommand::class => '?' . UpdateOrderHandlerInterface::class, GetProductsCommand::class => '?' . GetProductsHandlerInterface::class, AddProductToBasketCommand::class => '?' . AddProductToBasketHandlerInterface::class, UpdateCartMessageCommand::class => '?' . UpdateCartMessageHandlerInterface::class, CreateCartCommand::class => '?' . CreateCartHandlerInterface::class, AddProductToCartCommand::class => '?' . AddProductToCartHandlerInterface::class, IncrementCartQuantityCommand::class => '?' . IncrementCartQuantityHandlerInterface::class, /* configuration */ UpdateGeneralConfigurationCommand::class => '?' . UpdateGeneralConfigurationHandlerInterface::class, UpdateConsentsConfigurationCommand::class => '?' . UpdateConsentsConfigurationHandlerInterface::class, UpdateGuiConfigurationCommand::class => '?' . UpdateGuiConfigurationHandlerInterface::class, UpdateShippingConfigurationCommand::class => '?' . UpdateShippingConfigurationHandlerInterface::class, UpdateAdvancedConfigurationCommand::class => '?' . UpdateAdvancedConfigurationHandlerInterface::class, CheckStatusCommand::class => '?' . CheckStatusHandlerInterface::class, DownloadModuleDataCommand::class => '?' . DownloadModuleDataHandlerInterface::class, UpdateCartRuleOptionsCommand::class => '?' . UpdateCartRuleOptionsHandlerInterface::class, CreateHotProductCommand::class => '?' . CreateHotProductHandlerInterface::class, ImportHotProductCommand::class => '?' . ImportHotProductHandlerInterface::class, UpdateHotProductCommand::class => '?' . UpdateHotProductHandlerInterface::class, DeleteHotProductCommand::class => '?' . DeleteHotProductHandlerInterface::class, DeleteRemoteProductCommand::class => '?' . DeleteRemoteProductHandlerInterface::class, UpdateCartAnalyticsCommand::class => '?' . UpdateCartAnalyticsHandlerInterface::class, ]; } /** * {@inheritDoc} */ public function handle($command) { $class = get_class($command); $handler = $this->locator->get($class); if (!is_callable($handler)) { throw new \LogicException(sprintf('Handler for command "%s" is not callable', $class)); } return $handler($command); } }