![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/extmag/shiplab/Event/ |
<?php /** * Copyright © Extmag. All rights reserved. */ namespace Extmag\Shiplab\Event; use Exception; use Extmag\Shiplab\Api\LabelCronRepositoryInterface; use Extmag\Shiplab\Helper\Manager; use Extmag\Shiplab\Model\AccessPoint; use Extmag\Shiplab\Model\AccessPointFactory; use Extmag\Shiplab\Model\AccessPointRepository; use Extmag\Shiplab\Model\LabelCron; use Extmag\Shiplab\Model\LabelCronFactory; use Extmag\Shiplab\Model\ResourceModel\LabelCron\Collection; use Extmag\Shiplab\Model\ResourceModel\LabelCron\CollectionFactory as LabelCronCollectionFactory; use Extmag\Shiplab\Model\Source\CarrierCodes; use Magento\Customer\Model\Session; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\Exception\CouldNotSaveException; use Magento\Framework\Exception\LocalizedException; use Magento\Sales\Api\Data\OrderInterface; use Magento\Sales\Api\OrderRepositoryInterface; use Psr\Log\LoggerInterface; class OrderSaveAfter implements ObserverInterface { /** * @var LabelCronFactory */ protected $labelCron; /** * @var LabelCronRepositoryInterface */ protected $labelCronRepository; /** * @var LabelCronCollectionFactory */ protected $labelCronCollectionFactory; /** * @var Session */ protected $customerSession; /** * @var AccessPointFactory */ protected $accessPointFactory; /** * @var AccessPointRepository */ protected $accessPointRepository; /** * @var LoggerInterface */ protected $logger; /** * @var \Magento\Backend\Model\Session */ protected $backendSession; /** * @var Manager */ protected $manager; /** * @var OrderRepositoryInterface */ protected $order; /** * @var CarrierCodes */ protected $carrierCodes; /** * @param LabelCronFactory $labelCron * @param LabelCronRepositoryInterface $labelCronRepository * @param LabelCronCollectionFactory $labelCronCollectionFactory * @param OrderRepositoryInterface $order * @param Manager $manager * @param Session $customerSession * @param \Magento\Backend\Model\Session $backendSession * @param AccessPointFactory $accessPointFactory * @param AccessPointRepository $accessPointRepository * @param LoggerInterface $logger * @param CarrierCodes $carrierCodes */ public function __construct( LabelCronFactory $labelCron, LabelCronRepositoryInterface $labelCronRepository, LabelCronCollectionFactory $labelCronCollectionFactory, OrderRepositoryInterface $order, Manager $manager, Session $customerSession, \Magento\Backend\Model\Session $backendSession, AccessPointFactory $accessPointFactory, AccessPointRepository $accessPointRepository, LoggerInterface $logger, CarrierCodes $carrierCodes ) { $this->labelCron = $labelCron; $this->labelCronRepository = $labelCronRepository; $this->labelCronCollectionFactory = $labelCronCollectionFactory; $this->manager = $manager; $this->order = $order; $this->customerSession = $customerSession; $this->accessPointFactory = $accessPointFactory; $this->accessPointRepository = $accessPointRepository; $this->logger = $logger; $this->backendSession = $backendSession; $this->carrierCodes = $carrierCodes; } /** * @param Observer $observer * @return $this * @throws CouldNotSaveException * @throws LocalizedException */ public function execute(Observer $observer) { /** * @var OrderInterface $order */ $order = $observer->getEvent()->getOrder(); if ($order->getId()) { if ($this->isAvailableByConfig($order)) { /** * @var LabelCron $model */ $model = null; /** * @var Collection $collection */ $collection = $this->labelCronCollectionFactory->create(); $collection->addFieldToFilter('order_id', $order->getId()); $model = $collection->load()->getFirstItem(); if (empty($model)) { $model = $this->labelCron->create(); } $model->setOrderId($order->getId()); $model->setOrderStatus($order->getStatus()); $this->labelCronRepository->save($model); } $apAddress = $this->customerSession->getAccessPointData(); if (empty($apAddress)) { $apAddress = $this->backendSession->getAccessPointData(); } if (!empty($apAddress)) { $apAddress = json_decode($apAddress, true); /** * @var AccessPoint $apModel */ $apModel = $this->accessPointFactory->create(); $apModel->setOrderId($order->getId()); $apModel->setOrderIncrementId($order->getIncrementId()); $apModel->setAppuId($apAddress['appuId'] ?? ''); $apModel->setName($apAddress['name'] ?? ''); $apModel->setAddLine1($apAddress['addLine1'] ?? ''); $apModel->setAddLine2($apAddress['addLine2'] ?? ''); $apModel->setAddLine3($apAddress['addLine3'] ?? ''); $apModel->setCity($apAddress['city'] ?? ''); $apModel->setPostal($apAddress['postal'] ?? ''); $apModel->setState($apAddress['state'] ?? ''); $apModel->setCountry($apAddress['country'] ?? ''); $apModel->setCarrierCode($apAddress['carrier'] ?? ''); $this->accessPointRepository->save($apModel); if ($this->customerSession->hasAccessPointData()) { $this->customerSession->unsAccessPointData(); } if ($this->backendSession->hasAccessPointData()) { $this->backendSession->unsAccessPointData(); } } } return $this; } /** * @param OrderInterface $order * @return bool * @throws Exception */ protected function isAvailableByConfig(OrderInterface $order) { $shippingAddress = $order->getShippingAddress(); if($shippingAddress) { $carriers = $this->carrierCodes->getCarriers(); foreach ($carriers as $key => $carrier) { if ($this->manager->getConfig( $key . "_automatic/general/active", $order->getStoreId(), 'shipment', $order->getShippingAddress()->getCountryId() ) == 1 ) { return true; } } } return false; } }