Replace Paris code with Doctrine in NewslettersResponseBuilder.php

[MAILPOET-4138]
This commit is contained in:
Rodrigo Primo
2022-04-28 14:31:27 -03:00
committed by Veljko V
parent dd6cbbbbce
commit ed164ac397
3 changed files with 21 additions and 10 deletions

View File

@@ -5,8 +5,8 @@ namespace MailPoet\API\JSON\ResponseBuilders;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Models\SendingQueue;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Statistics\NewsletterStatistics;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Newsletter\Url as NewsletterUrl;
@@ -35,16 +35,21 @@ class NewslettersResponseBuilder {
/** @var NewsletterUrl */
private $newsletterUrl;
/** @var SendingQueuesRepository */
private $sendingQueuesRepository;
public function __construct(
EntityManager $entityManager,
NewslettersRepository $newslettersRepository,
NewsletterStatisticsRepository $newslettersStatsRepository,
NewsletterUrl $newsletterUrl
NewsletterUrl $newsletterUrl,
SendingQueuesRepository $sendingQueuesRepository
) {
$this->newslettersStatsRepository = $newslettersStatsRepository;
$this->newslettersRepository = $newslettersRepository;
$this->entityManager = $entityManager;
$this->newsletterUrl = $newsletterUrl;
$this->sendingQueuesRepository = $sendingQueuesRepository;
}
public function build(NewsletterEntity $newsletter, $relations = []) {
@@ -86,9 +91,10 @@ class NewslettersResponseBuilder {
$data['children_count'] = $this->newslettersStatsRepository->getChildrenCount($newsletter);
}
if ($relation === self::RELATION_SCHEDULED) {
$data['total_scheduled'] = (int)SendingQueue::findTaskByNewsletterId($newsletter->getId())
->where('tasks.status', SendingQueue::STATUS_SCHEDULED)
->count();
$data['total_scheduled'] = $this->sendingQueuesRepository->countAllByNewsletterAndTaskStatus(
$newsletter,
SendingQueueEntity::STATUS_SCHEDULED
);
}
if ($relation === self::RELATION_STATISTICS) {
@@ -150,9 +156,10 @@ class NewslettersResponseBuilder {
$data['segments'] = [];
$data['options'] = $this->buildOptions($newsletter);
$data['total_sent'] = $statistics ? $statistics->getTotalSentCount() : 0;
$data['total_scheduled'] = (int)SendingQueue::findTaskByNewsletterId($newsletter->getId())
->where('tasks.status', SendingQueue::STATUS_SCHEDULED)
->count();
$data['total_scheduled'] = $this->sendingQueuesRepository->countAllByNewsletterAndTaskStatus(
$newsletter,
SendingQueueEntity::STATUS_SCHEDULED
);
} elseif ($newsletter->getType() === NewsletterEntity::TYPE_NOTIFICATION) {
$data['segments'] = $this->buildSegments($newsletter);
$data['children_count'] = $this->newslettersStatsRepository->getChildrenCount($newsletter);