Add method for returning count of dynamic subscribers

[MAILPOET-3219]
This commit is contained in:
Jan Lysý
2021-03-11 14:11:11 +01:00
committed by Veljko V
parent 800eaacb16
commit e4eab6cbae
2 changed files with 39 additions and 0 deletions

View File

@ -2,6 +2,7 @@
namespace MailPoet\Segments;
use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
@ -85,6 +86,18 @@ class SegmentSubscribersRepository {
return (int)$result;
}
public function getDynamicSubscribersCount(DynamicSegmentFilterData $data): int {
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();
$queryBuilder = $this->entityManager->getConnection()->createQueryBuilder();
$queryBuilder
->select("COUNT(DISTINCT {$subscribersTable}.id) AS count")
->from($subscribersTable, $subscribersTable);
$queryBuilder = $this->filterHandler->apply($queryBuilder, $data);
$statement = $this->executeQuery($queryBuilder);
$result = $statement->fetchColumn();
return (int)$result;
}
public function getSubscribersWithoutSegmentCount(): int {
$queryBuilder = $this->getSubscribersWithoutSegmentCountQuery();
return (int)$queryBuilder->getQuery()->getSingleScalarResult();