Move function to a better repository

[MAILPOET-2439]
This commit is contained in:
Pavel Dohnal
2019-10-30 13:36:04 +01:00
committed by Jack Kitterhing
parent bda3bd3f63
commit ab1e398241
5 changed files with 28 additions and 26 deletions

View File

@@ -6,15 +6,14 @@ use Carbon\Carbon;
use MailPoet\Config\Renderer; use MailPoet\Config\Renderer;
use MailPoet\Cron\Workers\SimpleWorker; use MailPoet\Cron\Workers\SimpleWorker;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo; use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Statistics\NewsletterStatistics; use MailPoet\Newsletter\Statistics\NewsletterStatistics;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class AutomatedEmails extends SimpleWorker { class AutomatedEmails extends SimpleWorker {
@@ -35,7 +34,7 @@ class AutomatedEmails extends SimpleWorker {
/** @var float */ /** @var float */
public $timer; public $timer;
/** @var StatsNotificationsRepository */ /** @var NewslettersRepository */
private $repository; private $repository;
/** @var NewsletterStatisticsRepository */ /** @var NewsletterStatisticsRepository */
@@ -45,7 +44,7 @@ class AutomatedEmails extends SimpleWorker {
Mailer $mailer, Mailer $mailer,
Renderer $renderer, Renderer $renderer,
SettingsController $settings, SettingsController $settings,
StatsNotificationsRepository $repository, NewslettersRepository $repository,
NewsletterStatisticsRepository $newsletter_statistics_repository, NewsletterStatisticsRepository $newsletter_statistics_repository,
MetaInfo $mailerMetaInfo, MetaInfo $mailerMetaInfo,
$timer = false $timer = false
@@ -116,7 +115,9 @@ class AutomatedEmails extends SimpleWorker {
protected function getNewsletters() { protected function getNewsletters() {
$result = []; $result = [];
$newsletters = $this->repository->findScheduledAutomatedNewsletters(); $newsletters = $this->repository->findActiveByTypes(
[NewsletterEntity::TYPE_AUTOMATIC, NewsletterEntity::TYPE_WELCOME]
);
foreach ($newsletters as $newsletter) { foreach ($newsletters as $newsletter) {
$statistics = $this->newsletter_statistics_repository->getStatistics($newsletter); $statistics = $this->newsletter_statistics_repository->getStatistics($newsletter);
if ($statistics->getTotalSentCount()) { if ($statistics->getTotalSentCount()) {

View File

@@ -54,23 +54,5 @@ class StatsNotificationsRepository extends Repository {
return $query->getQuery()->getResult(); return $query->getQuery()->getResult();
} }
/**
* @return NewsletterEntity[]
*/
public function findScheduledAutomatedNewsletters() {
return $this->entity_manager
->createQueryBuilder()
->select('n')
->from(NewsletterEntity::class, 'n')
->where('n.status = :status')
->setParameter(':status', NewsletterEntity::STATUS_ACTIVE)
->andWhere('n.deleted_at is null')
->andWhere('n.type IN (:types)')
->setParameter('types', [NewsletterEntity::TYPE_AUTOMATIC, NewsletterEntity::TYPE_WELCOME])
->orderBy('n.subject')
->getQuery()
->getResult();
}
} }

View File

@@ -166,7 +166,7 @@ class WorkersFactory {
$this->mailer, $this->mailer,
$this->renderer, $this->renderer,
$this->settings, $this->settings,
$this->stats_notifications_repository, $this->newsletters_repository,
$this->newsletter_statistics_repository, $this->newsletter_statistics_repository,
$this->mailerMetaInfo, $this->mailerMetaInfo,
$timer $timer

View File

@@ -16,4 +16,23 @@ class NewslettersRepository extends Repository {
protected function getEntityClassName() { protected function getEntityClassName() {
return NewsletterEntity::class; return NewsletterEntity::class;
} }
/**
* @param string[] $types
* @return NewsletterEntity[]
*/
public function findActiveByTypes($types) {
return $this->entity_manager
->createQueryBuilder()
->select('n')
->from(NewsletterEntity::class, 'n')
->where('n.status = :status')
->setParameter(':status', NewsletterEntity::STATUS_ACTIVE)
->andWhere('n.deleted_at is null')
->andWhere('n.type IN (:types)')
->setParameter('types', $types)
->orderBy('n.subject')
->getQuery()
->getResult();
}
} }

View File

@@ -11,9 +11,9 @@ use MailPoet\Models\ScheduledTask;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\StatisticsClicks; use MailPoet\Models\StatisticsClicks;
use MailPoet\Models\StatisticsOpens; use MailPoet\Models\StatisticsOpens;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\Helper as WCHelper;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
class AutomatedEmailsTest extends \MailPoetTest { class AutomatedEmailsTest extends \MailPoetTest {
@@ -47,7 +47,7 @@ class AutomatedEmailsTest extends \MailPoetTest {
$this->mailer, $this->mailer,
$this->renderer, $this->renderer,
$this->settings, $this->settings,
ContainerWrapper::getInstance()->get(StatsNotificationsRepository::class), ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewsletterStatisticsRepository::class), ContainerWrapper::getInstance()->get(NewsletterStatisticsRepository::class),
new MetaInfo new MetaInfo
); );