Fix subscribers without segments count in subscribers filter

[MAILPOET-3164]
This commit is contained in:
Rostislav Wolny
2021-01-20 13:45:54 +01:00
committed by Veljko V
parent 8456581695
commit b7914a3ff6
2 changed files with 10 additions and 4 deletions

View File

@ -57,8 +57,13 @@ class SegmentSubscribersRepository {
}
public function getSubscribersWithoutSegmentCount(): int {
$queryBuilder = $this->getSubscribersWithoutSegmentCountQuery();
return (int)$queryBuilder->getQuery()->getSingleScalarResult();
}
public function getSubscribersWithoutSegmentCountQuery(): \MailPoetVendor\Doctrine\ORM\QueryBuilder {
$queryBuilder = $this->entityManager->createQueryBuilder();
return (int)$queryBuilder
return $queryBuilder
->select('COUNT(DISTINCT s) AS subscribersCount')
->from(SubscriberEntity::class, 's')
->leftJoin('s.subscriberSegments', 'ssg')
@ -69,8 +74,7 @@ class SegmentSubscribersRepository {
->andWhere('s.deletedAt IS NULL')
->andWhere('(ssg.status != :statusSubscribed OR ssg.id IS NULL OR sg.deletedAt IS NOT NULL)')
->andWhere('sg2.id IS NULL')
->setParameter('statusSubscribed', SubscriberEntity::STATUS_SUBSCRIBED)
->getQuery()->getSingleScalarResult();
->setParameter('statusSubscribed', SubscriberEntity::STATUS_SUBSCRIBED);
}
private function loadSubscriberIdsInSegment(int $segmentId, array $candidateIds = null): array {

View File

@ -233,12 +233,14 @@ class SubscriberListingRepository extends ListingRepository {
$queryBuilder = clone $this->queryBuilder;
$this->applyFromClause($queryBuilder);
$subscribersWithoutSegmentQuery = $this->segmentSubscribersRepository->getSubscribersWithoutSegmentCountQuery();
if ($group) {
$this->applyGroup($queryBuilder, $group);
$this->applyGroup($subscribersWithoutSegmentQuery, $group);
}
$subscribersWithoutSegment = $this->segmentSubscribersRepository->getSubscribersWithoutSegmentCount();
$subscribersWithoutSegment = $subscribersWithoutSegmentQuery->getQuery()->getSingleScalarResult();
$subscribersWithoutSegmentLabel = sprintf(
WPFunctions::get()->__('Subscribers without a list (%s)', 'mailpoet'),
number_format((float)$subscribersWithoutSegment)