eventList = $eventList; $this->eventDataConverter = $eventDataConverter; $this->logger = $logger; $this->eventProcessor = $eventProcessor; } /** * Intercepts Dispatch method and invokes after subscriptions if they are available * * @param ManagerInterface $subject * @param mixed $result * @param string $eventName * @param array $data * @return mixed */ public function afterDispatch(ManagerInterface $subject, $result, $eventName, array $data = []) { try { if ($eventName != $this->ignoredEvent) { $eventCode = EventSubscriberInterface::EVENT_PREFIX_COMMERCE . EventSubscriberInterface::EVENT_TYPE_OBSERVER . '.' . $eventName; if ($this->eventList->isEventEnabled($eventCode)) { $this->eventProcessor->processEvent($eventCode, $this->eventDataConverter->convert($data)); } } } catch (\Throwable $e) { $this->logger->error(sprintf( 'Failed to save event data. Event code: "%s", Error: "%s"', $eventName, $e->getMessage() )); } return $result; } }