mirror of
https://github.com/bdnugget/module-integration.git
synced 2026-11-07 08:17:27 +00:00
140 lines
3.7 KiB
PHP
140 lines
3.7 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace ActiveCampaign\Order\Block\Adminhtml\System\Config;
|
|
|
|
class OrderSyncStatus extends \Magento\Backend\Block\Template
|
|
{
|
|
public const AC_SYNC_STATUS = 'ac_order_sync_status';
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $_template = 'ActiveCampaign_Order::system/config/order_sync_status.phtml';
|
|
|
|
/**
|
|
* @var \Magento\Sales\Api\OrderRepositoryInterface
|
|
*/
|
|
private $orderRepository;
|
|
|
|
/**
|
|
* @var \Magento\Framework\Api\SearchCriteriaBuilder
|
|
*/
|
|
private $searchCriteriaBuilder;
|
|
|
|
/**
|
|
* @var \Magento\Framework\Api\FilterBuilder
|
|
*/
|
|
private $filterBuilder;
|
|
|
|
/**
|
|
* Construct
|
|
*
|
|
* @param \Magento\Backend\Block\Template\Context $context
|
|
* @param \Magento\Sales\Api\OrderRepositoryInterface $orderRepository
|
|
* @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
|
|
* @param \Magento\Framework\Api\FilterBuilder $filterBuilder
|
|
* @param array $data
|
|
*/
|
|
public function __construct(
|
|
\Magento\Backend\Block\Template\Context $context,
|
|
\Magento\Sales\Api\OrderRepositoryInterface $orderRepository,
|
|
\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
|
|
\Magento\Framework\Api\FilterBuilder $filterBuilder,
|
|
array $data = []
|
|
) {
|
|
$this->orderRepository = $orderRepository;
|
|
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
|
|
$this->filterBuilder = $filterBuilder;
|
|
|
|
parent::__construct($context, $data);
|
|
}
|
|
|
|
/**
|
|
* Get order count helper
|
|
*
|
|
* @param \Magento\Framework\Api\Filter[] $filter
|
|
* @return int
|
|
*/
|
|
public function getOrderCountHelper(array $filter = []): int
|
|
{
|
|
$searchCriteria = $this->searchCriteriaBuilder;
|
|
|
|
if (count($filter)) {
|
|
$searchCriteria->addFilters($filter);
|
|
}
|
|
$searchCriteria = $searchCriteria->create();
|
|
$searchCriteria->setCurrentPage(1)
|
|
->setPageSize(1);
|
|
|
|
return $this->orderRepository
|
|
->getList($searchCriteria)
|
|
->getTotalCount();
|
|
}
|
|
|
|
/**
|
|
* Get total order
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getTotalOrder(): int
|
|
{
|
|
return $this->getOrderCountHelper();
|
|
}
|
|
|
|
/**
|
|
* Get sync order
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getSyncOrder(): int
|
|
{
|
|
return $this->getOrderCountHelper([
|
|
$this->filterBuilder
|
|
->setField(self::AC_SYNC_STATUS)
|
|
->setValue(\ActiveCampaign\Order\Model\Config\CronConfig::SYNCED)
|
|
->setConditionType('eq')
|
|
->create()
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Get not sync order
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getNotSyncOrder(): int
|
|
{
|
|
return $this->getOrderCountHelper(
|
|
[
|
|
$this->filterBuilder
|
|
->setField(self::AC_SYNC_STATUS)
|
|
->setValue(\ActiveCampaign\Order\Model\Config\CronConfig::NOT_SYNCED)
|
|
->setConditionType('eq')
|
|
->create(),
|
|
$this->filterBuilder
|
|
->setField(self::AC_SYNC_STATUS)
|
|
->setValue(true)
|
|
->setConditionType('null')
|
|
->create()
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get failed sync
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getFailedSync(): int
|
|
{
|
|
return $this->getOrderCountHelper([
|
|
$this->filterBuilder
|
|
->setField(self::AC_SYNC_STATUS)
|
|
->setValue(\ActiveCampaign\Order\Model\Config\CronConfig::FAIL_SYNCED)
|
|
->setConditionType('eq')
|
|
->create()
|
|
]);
|
|
}
|
|
}
|