Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/extmag/shiplab/Event/OrderSaveAfter.php
<?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;
    }
}

Spamworldpro Mini