Save the correct datetime value for newsletter sentAt column

We don't need to use the value from `processedAt` here since we can rightfully use the current datetime value

Also, I found out `processedAt` is usually null here for standard newsletters which cause new Carbon to use the server datetime settings

MAILPOET-5795
This commit is contained in:
Oluwaseun Olorunsola
2023-12-21 15:08:24 +01:00
committed by Aschepikov
parent 639d779088
commit c76c8f2abb
3 changed files with 7 additions and 8 deletions

View File

@ -272,7 +272,7 @@ class SendingQueue {
); );
$queue->removeSubscribers($subscribersToRemove); $queue->removeSubscribers($subscribersToRemove);
if (!$queue->countToProcess) { if (!$queue->countToProcess) {
$this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue); $this->newsletterTask->markNewsletterAsSent($newsletterEntity);
continue; continue;
} }
// if there aren't any subscribers to process in batch (e.g. all unsubscribed or were deleted) continue with next batch // if there aren't any subscribers to process in batch (e.g. all unsubscribed or were deleted) continue with next batch
@ -312,7 +312,7 @@ class SendingQueue {
'completed newsletter sending', 'completed newsletter sending',
['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId] ['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId]
); );
$this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue); $this->newsletterTask->markNewsletterAsSent($newsletterEntity);
$this->statsNotificationsScheduler->schedule($newsletterEntity); $this->statsNotificationsScheduler->schedule($newsletterEntity);
} }
$this->enforceSendingAndExecutionLimits($timer); $this->enforceSendingAndExecutionLimits($timer);

View File

@ -281,15 +281,14 @@ class Newsletter {
]; ];
} }
public function markNewsletterAsSent(NewsletterEntity $newsletter, Sending $sendingTask) { public function markNewsletterAsSent(NewsletterEntity $newsletter) {
// if it's a standard or notification history newsletter, update its status // if it's a standard or notification history newsletter, update its status
if ( if (
$newsletter->getType() === NewsletterEntity::TYPE_STANDARD || $newsletter->getType() === NewsletterEntity::TYPE_STANDARD ||
$newsletter->getType() === NewsletterEntity::TYPE_NOTIFICATION_HISTORY $newsletter->getType() === NewsletterEntity::TYPE_NOTIFICATION_HISTORY
) { ) {
$scheduledTask = $sendingTask->task();
$newsletter->setStatus(NewsletterEntity::STATUS_SENT); $newsletter->setStatus(NewsletterEntity::STATUS_SENT);
$newsletter->setSentAt(new Carbon($scheduledTask->processedAt)); $newsletter->setSentAt(Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp')));
$this->newslettersRepository->persist($newsletter); $this->newslettersRepository->persist($newsletter);
$this->newslettersRepository->flush(); $this->newslettersRepository->flush();
} }

View File

@ -265,7 +265,7 @@ class NewsletterTest extends \MailPoetTest {
$newsletter->setStatus('not_sent'); $newsletter->setStatus('not_sent');
$this->newslettersRepository->persist($newsletter); $this->newslettersRepository->persist($newsletter);
$this->newslettersRepository->flush(); $this->newslettersRepository->flush();
$this->newsletterTask->markNewsletterAsSent($newsletter, $this->sendingTask); $this->newsletterTask->markNewsletterAsSent($newsletter);
$updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId()); $updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId());
$this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter);
verify($updatedNewsletter->getStatus())->equals(NewsletterEntity::STATUS_SENT); verify($updatedNewsletter->getStatus())->equals(NewsletterEntity::STATUS_SENT);
@ -278,7 +278,7 @@ class NewsletterTest extends \MailPoetTest {
$newsletter->setStatus('not_sent'); $newsletter->setStatus('not_sent');
$this->newslettersRepository->persist($newsletter); $this->newslettersRepository->persist($newsletter);
$this->newslettersRepository->flush(); $this->newslettersRepository->flush();
$this->newsletterTask->markNewsletterAsSent($newsletter, $this->sendingTask); $this->newsletterTask->markNewsletterAsSent($newsletter);
$updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId()); $updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId());
$this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter);
verify($updatedNewsletter->getStatus())->equals(NewsletterEntity::STATUS_SENT); verify($updatedNewsletter->getStatus())->equals(NewsletterEntity::STATUS_SENT);
@ -291,7 +291,7 @@ class NewsletterTest extends \MailPoetTest {
$newsletter->setStatus('not_sent'); $newsletter->setStatus('not_sent');
$this->newslettersRepository->persist($newsletter); $this->newslettersRepository->persist($newsletter);
$this->newslettersRepository->flush(); $this->newslettersRepository->flush();
$this->newsletterTask->markNewsletterAsSent($newsletter, $this->sendingTask); $this->newsletterTask->markNewsletterAsSent($newsletter);
$updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId()); $updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId());
$this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter);
verify($updatedNewsletter->getStatus())->notEquals(NewsletterEntity::STATUS_SENT); verify($updatedNewsletter->getStatus())->notEquals(NewsletterEntity::STATUS_SENT);