Fix count returned from shortcode mailpoet_subscribers_count

[MAILPOET-3424]
This commit is contained in:
Jan Lysý
2021-03-04 12:13:56 +01:00
committed by Veljko V
parent abdcbb245a
commit fb68f1a7d8
2 changed files with 40 additions and 6 deletions

View File

@@ -56,6 +56,34 @@ class SegmentSubscribersRepository {
return (int)$result;
}
public function getSubscribersCountBySegmentIds(array $segmentIds, string $status = null): int {
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();
$subscribersSegmentsTable = $this->entityManager->getClassMetadata(SubscriberSegmentEntity::class)->getTableName();
$queryBuilder = $this->entityManager
->getConnection()
->createQueryBuilder()
->select("count(DISTINCT $subscribersTable.id)")
->from($subscribersTable)
->join(
$subscribersTable,
$subscribersSegmentsTable,
'subsegment',
"subsegment.subscriber_id = $subscribersTable.id"
)->andWhere("$subscribersTable.deleted_at IS NULL")
->andWhere("subsegment.segment_id IN (:segmentIds)")
->setParameter('segmentIds', $segmentIds, Connection::PARAM_INT_ARRAY);
if ($status) {
$queryBuilder->andWhere("$subscribersTable.status = :status")
->andWhere("subsegment.status = :status")
->setParameter('status', $status);
}
$statement = $this->executeQuery($queryBuilder);
$result = $statement->fetchColumn();
return (int)$result;
}
public function getSubscribersWithoutSegmentCount(): int {
$queryBuilder = $this->getSubscribersWithoutSegmentCountQuery();
return (int)$queryBuilder->getQuery()->getSingleScalarResult();