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(); return $sendingTask->save();
} }
private function rescheduleAutomaticEmailSendingTask($newsletter, $task, $meta = false) { private function rescheduleAutomaticEmailSendingTask($newsletter, ScheduledTask $task, $meta = false) {
$sendingTask = SendingTask::createFromScheduledTask($task);
if ($meta) { if ($meta) {
$task->__set('meta', $meta); $sendingTask->__set('meta', $meta);
} }
// compute new 'scheduled_at' from now // compute new 'scheduled_at' from now
$task->scheduledAt = Scheduler::getScheduledTimeWithDelay($newsletter->afterTimeType, $newsletter->afterTimeNumber); $sendingTask->scheduledAt = Scheduler::getScheduledTimeWithDelay($newsletter->afterTimeType, $newsletter->afterTimeNumber);
$task->save(); $sendingTask->save();
} }
} }

View File

@ -102,6 +102,15 @@ class Sending {
return $result; 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) { public static function createFromQueue(SendingQueue $queue) {
$task = $queue->task()->findOne(); $task = $queue->task()->findOne();
if (!$task) { if (!$task) {

View File

@ -58,6 +58,12 @@ class SendingTest extends \MailPoetTest {
expect($queue->taskId)->equals($this->task->id); 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() { public function testItCanBeCreatedFromQueue() {
$sending = SendingTask::createFromQueue($this->queue); $sending = SendingTask::createFromQueue($this->queue);
$task = $sending->task(); $task = $sending->task();