Add isTransactional method to NewsletterEntity

[MAILPOET-6115]
This commit is contained in:
David Remer
2024-06-21 08:26:10 +03:00
committed by Veljko V
parent 2cba628c29
commit fd0d1036e6
3 changed files with 19 additions and 7 deletions

View File

@ -187,11 +187,6 @@ class SendingQueue {
return; return;
} }
$isTransactional = in_array($newsletter->getType(), [
NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL,
NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL,
]);
// configure mailer // configure mailer
$this->mailerTask->configureMailer($newsletter); $this->mailerTask->configureMailer($newsletter);
// get newsletter segments // get newsletter segments
@ -272,7 +267,7 @@ class SendingQueue {
->setParameter('subscriberIds', $subscribersToProcessIds) ->setParameter('subscriberIds', $subscribersToProcessIds)
->andWhere('s.deletedAt IS NULL'); ->andWhere('s.deletedAt IS NULL');
if ($newsletter->getType() === NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL) { if ($newsletter->isTransactional()) {
$queryBuilder->andWhere('s.status != :bouncedStatus') $queryBuilder->andWhere('s.status != :bouncedStatus')
->setParameter('bouncedStatus', SubscriberEntity::STATUS_BOUNCED); ->setParameter('bouncedStatus', SubscriberEntity::STATUS_BOUNCED);
} else { } else {
@ -323,7 +318,7 @@ class SendingQueue {
$foundSubscribers, $foundSubscribers,
$timer $timer
); );
if (!$isTransactional) { if (!$newsletter->isTransactional()) {
$this->entityManager->wrapInTransaction(function() use ($foundSubscribersIds) { $this->entityManager->wrapInTransaction(function() use ($foundSubscribersIds) {
$now = Carbon::createFromTimestamp((int)current_time('timestamp')); $now = Carbon::createFromTimestamp((int)current_time('timestamp'));
$this->subscribersRepository->bulkUpdateLastSendingAt($foundSubscribersIds, $now); $this->subscribersRepository->bulkUpdateLastSendingAt($foundSubscribersIds, $now);

View File

@ -608,4 +608,11 @@ class NewsletterEntity {
$campaignName = $this->getCampaignName(); $campaignName = $this->getCampaignName();
return $campaignName ?: $this->getSubject(); return $campaignName ?: $this->getSubject();
} }
public function isTransactional(): bool {
return in_array($this->getType(), [
NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL,
NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL,
]);
}
} }

View File

@ -220,6 +220,16 @@ class NewsletterEntityTest extends \MailPoetTest {
verify($notificationHistoryNewsletter->getFilterSegmentId())->equals(2); verify($notificationHistoryNewsletter->getFilterSegmentId())->equals(2);
} }
public function testIsTransactional(): void {
$newsletter = $this->createNewsletter();
$this->assertFalse($newsletter->isTransactional());
$newsletter->setType(NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL);
$this->assertTrue($newsletter->isTransactional());
$newsletter->setType(NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL);
$this->assertTrue($newsletter->isTransactional());
}
private function createNewsletter(string $type = NewsletterEntity::TYPE_STANDARD): NewsletterEntity { private function createNewsletter(string $type = NewsletterEntity::TYPE_STANDARD): NewsletterEntity {
$newsletter = new NewsletterEntity(); $newsletter = new NewsletterEntity();
$newsletter->setType($type); $newsletter->setType($type);