signifydIntegrationConfig = $signifydIntegrationConfig; $this->caseCreationService = $caseCreationService; $this->logger = $logger; } /** * {@inheritdoc} */ public function execute(Observer $observer) { $orders = $this->extractOrders( $observer->getEvent() ); if (null === $orders) { return; } foreach ($orders as $order) { $storeId = $order->getStoreId(); if ($this->signifydIntegrationConfig->isActive($storeId)) { $this->createCaseForOrder($order); } } } /** * Creates Signifyd case for single order with online payment method. * * @param OrderInterface $order * @return void */ private function createCaseForOrder($order) { $orderId = $order->getEntityId(); if (null === $orderId || $order->getPayment()->getMethodInstance()->isOffline() || $order->getState() === Order::STATE_PENDING_PAYMENT) { return; } try { $this->caseCreationService->createForOrder($orderId); } catch (AlreadyExistsException $e) { $this->logger->error($e->getMessage()); } } /** * Returns Orders entity list from Event data container * * @param Event $event * @return OrderInterface[]|null */ private function extractOrders(Event $event) { $order = $event->getData('order'); if (null !== $order) { return [$order]; } return $event->getData('orders'); } }