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

View File

@ -54,23 +54,5 @@ class StatsNotificationsRepository extends Repository {
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->renderer,
$this->settings,
$this->stats_notifications_repository,
$this->newsletters_repository,
$this->newsletter_statistics_repository,
$this->mailerMetaInfo,
$timer

View File

@ -16,4 +16,23 @@ class NewslettersRepository extends Repository {
protected function getEntityClassName() {
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\StatisticsClicks;
use MailPoet\Models\StatisticsOpens;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\Helper as WCHelper;
use PHPUnit\Framework\MockObject\MockObject;
class AutomatedEmailsTest extends \MailPoetTest {
@ -47,7 +47,7 @@ class AutomatedEmailsTest extends \MailPoetTest {
$this->mailer,
$this->renderer,
$this->settings,
ContainerWrapper::getInstance()->get(StatsNotificationsRepository::class),
ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewsletterStatisticsRepository::class),
new MetaInfo
);