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

View File

@@ -6,6 +6,7 @@ use Codeception\Util\Stub;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Statistics\NewsletterStatistics; use MailPoet\Newsletter\Statistics\NewsletterStatistics;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Newsletter\Url; use MailPoet\Newsletter\Url;
@@ -41,7 +42,8 @@ class NewslettersResponseBuilderTest extends \MailPoetTest {
]); ]);
$newsletterRepository = Stub::make(NewslettersRepository::class); $newsletterRepository = Stub::make(NewslettersRepository::class);
$newsletterUrl = $this->diContainer->get(Url::class); $newsletterUrl = $this->diContainer->get(Url::class);
$responseBuilder = new NewslettersResponseBuilder($em, $newsletterRepository, $newsletterStatsRepository, $newsletterUrl); $sendingQueuesRepository = $this->diContainer->get(SendingQueuesRepository::class);
$responseBuilder = new NewslettersResponseBuilder($em, $newsletterRepository, $newsletterStatsRepository, $newsletterUrl, $sendingQueuesRepository);
$response = $responseBuilder->build($newsletter, [ $response = $responseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_CHILDREN_COUNT, NewslettersResponseBuilder::RELATION_CHILDREN_COUNT,
NewslettersResponseBuilder::RELATION_TOTAL_SENT, NewslettersResponseBuilder::RELATION_TOTAL_SENT,

View File

@@ -33,6 +33,7 @@ use MailPoet\Newsletter\Preview\SendPreviewException;
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler; use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Newsletter\Segment\NewsletterSegmentRepository; use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Newsletter\Url; use MailPoet\Newsletter\Url;
use MailPoet\Router\Router; use MailPoet\Router\Router;
@@ -107,7 +108,8 @@ class NewslettersTest extends \MailPoetTest {
$this->diContainer->get(EntityManager::class), $this->diContainer->get(EntityManager::class),
$this->makeEmpty(WCHelper::class) $this->makeEmpty(WCHelper::class)
), ),
$this->diContainer->get(Url::class) $this->diContainer->get(Url::class),
$this->diContainer->get(SendingQueuesRepository::class)
), ),
] ]
); );