Replace Paris code with Doctrine in NewslettersResponseBuilder.php
[MAILPOET-4138]
This commit is contained in:
@@ -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);
|
||||||
|
@@ -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,
|
||||||
|
@@ -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)
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user