Fix items not updating when rescheduling abandoned cart email [MAILPOET-2979]

This commit is contained in:
wxa
2020-10-06 21:22:58 +03:00
committed by Veljko V
parent 0dffed35e9
commit d9a0bccd1d
3 changed files with 20 additions and 4 deletions

View File

@ -96,12 +96,13 @@ class AutomaticEmailScheduler {
return $sendingTask->save();
}
private function rescheduleAutomaticEmailSendingTask($newsletter, $task, $meta = false) {
private function rescheduleAutomaticEmailSendingTask($newsletter, ScheduledTask $task, $meta = false) {
$sendingTask = SendingTask::createFromScheduledTask($task);
if ($meta) {
$task->__set('meta', $meta);
$sendingTask->__set('meta', $meta);
}
// compute new 'scheduled_at' from now
$task->scheduledAt = Scheduler::getScheduledTimeWithDelay($newsletter->afterTimeType, $newsletter->afterTimeNumber);
$task->save();
$sendingTask->scheduledAt = Scheduler::getScheduledTimeWithDelay($newsletter->afterTimeType, $newsletter->afterTimeNumber);
$sendingTask->save();
}
}

View File

@ -102,6 +102,15 @@ class Sending {
return $result;
}
public static function createFromScheduledTask(ScheduledTask $task) {
$queue = SendingQueue::where('task_id', $task->id)->findOne();
if (!$queue) {
return false;
}
return self::create($task, $queue);
}
public static function createFromQueue(SendingQueue $queue) {
$task = $queue->task()->findOne();
if (!$task) {

View File

@ -58,6 +58,12 @@ class SendingTest extends \MailPoetTest {
expect($queue->taskId)->equals($this->task->id);
}
public function testItCanBeCreatedFromScheduledTask() {
$sending = SendingTask::createFromScheduledTask($this->task);
$queue = $sending->queue();
expect($queue->taskId)->equals($this->task->id);
}
public function testItCanBeCreatedFromQueue() {
$sending = SendingTask::createFromQueue($this->queue);
$task = $sending->task();