Use new controller with subscribers counts

[MAILPOET-3646]
This commit is contained in:
Jan Lysý
2021-07-08 13:40:17 +02:00
committed by Veljko V
parent ac2a70f39b
commit a6dc552cdc
10 changed files with 172 additions and 122 deletions

View File

@@ -38,15 +38,20 @@ class SubscriberListingRepository extends ListingRepository {
/** @var SegmentSubscribersRepository */
private $segmentSubscribersRepository;
/** @var SubscribersCountsController */
private $subscribersCountsController;
public function __construct(
EntityManager $entityManager,
FilterHandler $dynamicSegmentsFilter,
SegmentSubscribersRepository $segmentSubscribersRepository
SegmentSubscribersRepository $segmentSubscribersRepository,
SubscribersCountsController $subscribersCountsController
) {
parent::__construct($entityManager);
$this->dynamicSegmentsFilter = $dynamicSegmentsFilter;
$this->entityManager = $entityManager;
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
$this->subscribersCountsController = $subscribersCountsController;
}
public function getData(ListingDefinition $definition): array {
@@ -223,7 +228,7 @@ class SubscriberListingRepository extends ListingRepository {
public function getFilters(ListingDefinition $definition): array {
$group = $definition->getGroup();
$subscribersWithoutSegmentStats = $this->segmentSubscribersRepository->getSubscribersWithoutSegmentStatisticsCount();
$subscribersWithoutSegmentStats = $this->subscribersCountsController->getSubscribersWithoutSegmentStatisticsCount();
$key = $group ?: 'all';
$subscribersWithoutSegmentCount = $subscribersWithoutSegmentStats[$key];
@@ -256,7 +261,11 @@ class SubscriberListingRepository extends ListingRepository {
$segmentList = [];
foreach ($queryBuilder->getQuery()->getResult() as $segment) {
$key = $group ?: 'all';
$count = $this->segmentSubscribersRepository->getSubscribersStatisticsCount($segment);
if ($segment->isStatic()) {
$count = $this->subscribersCountsController->getSegmentGlobalStatusStatisticsCount($segment);
} else {
$count = $this->subscribersCountsController->getSegmentStatisticsCount($segment);
}
if (!$count[$key]) {
continue;
}