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() ]); } }