Files
module-integration/Order/Cron/OrderSyncCron.php
wagatorandJordan e1952158fe AC-139 #comment return type of getCustomer() method is changed in Order/Model/OrderData/OrderDataSend.php and changes in Order/Observer/OrderSync.php (#36)
[AC-139] Resolved the compatibility issues with magento v. 2.4.5
AC-142 AC-139 #comment update "Abandoned Cart SendData.php" for compatibility with magento 2.3

Co-authored-by: Jordan <jprice@activecampaign.com>
2022-09-15 19:21:44 -05:00

116 lines
3.4 KiB
PHP

<?php
namespace ActiveCampaign\Order\Cron;
use ActiveCampaign\Core\Helper\Curl;
use ActiveCampaign\Order\Helper\Data as ActiveCampaignOrderHelper;
use ActiveCampaign\Order\Model\OrderData\OrderDataSend;
use GuzzleHttp\Exception\GuzzleException;
use Magento\Framework\App\State;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Quote\Api\CartRepositoryInterface;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
use Psr\Log\LoggerInterface;
class OrderSyncCron
{
public const DELETE_METHOD = "DELETE";
public const URL_ENDPOINT = "ecomOrders/";
/**
* @var ActiveCampaignOrderHelper
*/
private $activeCampaignHelper;
/**
* @var OrderDataSend
*/
protected $orderdataSend;
/**
* @var CollectionFactory
*/
protected $_orderCollectionFactory;
/**
* @var State
*/
private $state;
/**
* @var CartRepositoryInterface
*/
protected $quoteRepository;
/**
* @var Curl
*/
protected $curl;
/**
* @var LoggerInterface
*/
protected $logger;
/**
* OrderSyncCron constructor.
* @param OrderDataSend $orderdataSend
* @param CollectionFactory $orderCollectionFactory
* @param ActiveCampaignOrderHelper $activeCampaignHelper
* @param State $state
* @param Curl $curl
* @param CartRepositoryInterface $quoteRepository
* @param LoggerInterface $logger
*/
public function __construct(
OrderDataSend $orderdataSend,
CollectionFactory $orderCollectionFactory,
ActiveCampaignOrderHelper $activeCampaignHelper,
State $state,
Curl $curl,
CartRepositoryInterface $quoteRepository,
LoggerInterface $logger
) {
$this->orderdataSend = $orderdataSend;
$this->_orderCollectionFactory = $orderCollectionFactory;
$this->activeCampaignHelper = $activeCampaignHelper;
$this->state = $state;
$this->curl = $curl;
$this->quoteRepository = $quoteRepository;
$this->logger = $logger;
}
/**
* @throws NoSuchEntityException|GuzzleException
*/
public function execute(): void
{
try {
$isEnabled = $this->activeCampaignHelper->isOrderSyncEnabled();
if ($isEnabled) {
$OrderSyncNum = $this->activeCampaignHelper->getOrderSyncNum();
$orderCollection = $this->_orderCollectionFactory->create()
->addAttributeToSelect('*')
->addFieldToFilter(
'ac_order_sync_status',
['eq' => 0]
)
->setPageSize($OrderSyncNum);
foreach ($orderCollection as $order) {
try {
$this->orderdataSend->orderDataSend($order);
$quote = $this->quoteRepository->get($order->getQuoteId());
if ($quote->getAcOrderSyncId() !== 0) {
$this->curl->orderDataDelete(self::DELETE_METHOD, self::URL_ENDPOINT, $quote->getAcOrderSyncId());
}
} catch (NoSuchEntityException|GuzzleException $e) {
$this->logger->error('MODULE Order: ' . $e->getMessage());
}
}
}
} catch (\Exception $e) {
$this->logger->error('MODULE Order: ' . $e->getMessage());
}
}
}