Pass revenues in stats response
[MAILPOET-3069]
This commit is contained in:
@ -6,12 +6,25 @@ use MailPoet\Doctrine\Repository;
|
||||
use MailPoet\Entities\StatisticsClickEntity;
|
||||
use MailPoet\Entities\StatisticsNewsletterEntity;
|
||||
use MailPoet\Entities\StatisticsOpenEntity;
|
||||
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Newsletter\Statistics\WooCommerceRevenue;
|
||||
use MailPoet\WooCommerce\Helper as WCHelper;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
/**
|
||||
* @extends Repository<SubscriberEntity>
|
||||
*/
|
||||
class SubscriberStatisticsRepository extends Repository {
|
||||
|
||||
/** @var WCHelper */
|
||||
private $wcHelper;
|
||||
|
||||
public function __construct(EntityManager $entityManager, WCHelper $wcHelper) {
|
||||
parent::__construct($entityManager);
|
||||
$this->wcHelper = $wcHelper;
|
||||
}
|
||||
|
||||
protected function getEntityClassName() {
|
||||
return SubscriberEntity::class;
|
||||
}
|
||||
@ -20,7 +33,8 @@ class SubscriberStatisticsRepository extends Repository {
|
||||
return new SubscriberStatistics(
|
||||
$this->getStatisticsClickCount($subscriber),
|
||||
$this->getStatisticsOpenCount($subscriber),
|
||||
$this->getTotalSentCount($subscriber)
|
||||
$this->getTotalSentCount($subscriber),
|
||||
$this->getWooCommerceRevenue($subscriber)
|
||||
);
|
||||
}
|
||||
|
||||
@ -45,4 +59,29 @@ class SubscriberStatisticsRepository extends Repository {
|
||||
->getQuery()
|
||||
->getSingleScalarResult();
|
||||
}
|
||||
|
||||
private function getWooCommerceRevenue(SubscriberEntity $subscriber) {
|
||||
if (!$this->wcHelper->isWooCommerceActive()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$currency = $this->wcHelper->getWoocommerceCurrency();
|
||||
$result = $this->entityManager
|
||||
->createQueryBuilder()
|
||||
->select('SUM(stats.orderPriceTotal) AS total, COUNT(stats.id) AS cnt')
|
||||
->from(StatisticsWooCommercePurchaseEntity::class, 'stats')
|
||||
->where('stats.subscriber = :subscriber')
|
||||
->andWhere('stats.orderCurrency = :currency')
|
||||
->setParameter('subscriber', $subscriber)
|
||||
->setParameter('currency', $currency)
|
||||
->getQuery()
|
||||
->getSingleResult();
|
||||
|
||||
return new WooCommerceRevenue(
|
||||
$currency,
|
||||
(float)$result['total'],
|
||||
(int)$result['cnt'],
|
||||
$this->wcHelper
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user