Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PlaceOrder.php
Go to the documentation of this file.
1 <?php
7 
16 use Psr\Log\LoggerInterface;
17 
22 class PlaceOrder implements ObserverInterface
23 {
27  private $signifydIntegrationConfig;
28 
32  private $caseCreationService;
33 
37  private $logger;
38 
44  public function __construct(
45  Config $signifydIntegrationConfig,
46  CaseCreationServiceInterface $caseCreationService,
47  LoggerInterface $logger
48  ) {
49  $this->signifydIntegrationConfig = $signifydIntegrationConfig;
50  $this->caseCreationService = $caseCreationService;
51  $this->logger = $logger;
52  }
53 
57  public function execute(Observer $observer)
58  {
59  $orders = $this->extractOrders(
60  $observer->getEvent()
61  );
62 
63  if (null === $orders) {
64  return;
65  }
66 
67  foreach ($orders as $order) {
68  $storeId = $order->getStoreId();
69  if ($this->signifydIntegrationConfig->isActive($storeId)) {
70  $this->createCaseForOrder($order);
71  }
72  }
73  }
74 
81  private function createCaseForOrder($order)
82  {
83  $orderId = $order->getEntityId();
84  if (null === $orderId
85  || $order->getPayment()->getMethodInstance()->isOffline()
86  || $order->getState() === Order::STATE_PENDING_PAYMENT) {
87  return;
88  }
89 
90  try {
91  $this->caseCreationService->createForOrder($orderId);
92  } catch (AlreadyExistsException $e) {
93  $this->logger->error($e->getMessage());
94  }
95  }
96 
103  private function extractOrders(Event $event)
104  {
105  $order = $event->getData('order');
106  if (null !== $order) {
107  return [$order];
108  }
109 
110  return $event->getData('orders');
111  }
112 }
$order
Definition: order.php:55
$logger
__construct(Config $signifydIntegrationConfig, CaseCreationServiceInterface $caseCreationService, LoggerInterface $logger)
Definition: PlaceOrder.php:44