Fix generate data command

[MAILPOET-3682]
This commit is contained in:
Brezo Cordero
2021-08-17 11:53:18 -05:00
committed by Veljko V
parent 79a2d1f934
commit e6fbf98da8

View File

@@ -2,6 +2,8 @@
namespace MailPoet\Test\DataGenerator\Generators; namespace MailPoet\Test\DataGenerator\Generators;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoet\Models\NewsletterSegment; use MailPoet\Models\NewsletterSegment;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
@@ -16,6 +18,7 @@ use MailPoet\Tasks\Sending;
use MailPoet\Test\DataFactories\Newsletter; use MailPoet\Test\DataFactories\Newsletter;
use MailPoet\Test\DataFactories\Segment; use MailPoet\Test\DataFactories\Segment;
use MailPoetVendor\Carbon\Carbon; use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Idiorm\ORM; use MailPoetVendor\Idiorm\ORM;
class WooCommercePastRevenues implements Generator { class WooCommercePastRevenues implements Generator {
@@ -331,7 +334,7 @@ class WooCommercePastRevenues implements Generator {
/** /**
* @return array * @return array
*/ */
private function createSentEmailData(\MailPoet\Models\Newsletter $newsletter, $sentAt, $subscribersIds, $segmentId) { private function createSentEmailData( NewsletterEntity $newsletter, $sentAt, $subscribersIds, $segmentId) {
// Sending task // Sending task
$task = ScheduledTask::createOrUpdate([ $task = ScheduledTask::createOrUpdate([
'type' => Sending::TASK_TYPE, 'type' => Sending::TASK_TYPE,
@@ -344,12 +347,15 @@ class WooCommercePastRevenues implements Generator {
// Sending queue // Sending queue
$queue = SendingQueue::createOrUpdate([ $queue = SendingQueue::createOrUpdate([
'task_id' => $task->id, 'task_id' => $task->id,
'newsletter_id' => $newsletter->id, 'newsletter_id' => $newsletter->getId(),
'count_total' => count($subscribersIds), 'count_total' => count($subscribersIds),
'count_processed' => count($subscribersIds), 'count_processed' => count($subscribersIds),
]); ]);
$queue->save(); $queue->save();
$entityManager = ContainerWrapper::getInstance()->get(EntityManager::class);
$entityManager->refresh($newsletter);
// Add subscribers to task and stats sent // Add subscribers to task and stats sent
$batchData = []; $batchData = [];
$statsBatchData = []; $statsBatchData = [];
@@ -361,7 +367,7 @@ class WooCommercePastRevenues implements Generator {
); );
$batchData = []; $batchData = [];
} }
$statsBatchData[] = "({$newsletter->id}, $subscriberId, $queue->id, '$sentAt')"; $statsBatchData[] = "({$newsletter->getId()}, $subscriberId, $queue->id, '$sentAt')";
if (count($statsBatchData) % 1000 === 0) { if (count($statsBatchData) % 1000 === 0) {
ORM::rawExecute( ORM::rawExecute(
"INSERT INTO " . StatisticsNewsletters::$_table . " (`newsletter_id`, `subscriber_id`, `queue_id`, `sent_at`) VALUES " . implode(', ', $statsBatchData) "INSERT INTO " . StatisticsNewsletters::$_table . " (`newsletter_id`, `subscriber_id`, `queue_id`, `sent_at`) VALUES " . implode(', ', $statsBatchData)
@@ -384,24 +390,25 @@ class WooCommercePastRevenues implements Generator {
// Link // Link
$link = (new \MailPoet\Test\DataFactories\NewsletterLink($newsletter)) $link = (new \MailPoet\Test\DataFactories\NewsletterLink($newsletter))
->withCreatedAt($sentAt) ->withCreatedAt($sentAt)
->create() ->create();
->save();
// Newsletter segment // Newsletter segment
NewsletterSegment::createOrUpdate(['newsletter_id' => $newsletter->id, 'segment_id' => $segmentId])->save(); NewsletterSegment::createOrUpdate(['newsletter_id' => $newsletter->getId(), 'segment_id' => $segmentId])->save();
if ($newsletter->status === \MailPoet\Models\Newsletter::STATUS_DRAFT) { $entityManager->refresh($newsletter);
$newsletter->status = \MailPoet\Models\Newsletter::STATUS_SENT;
$newsletter->sentAt = $sentAt; if ($newsletter->getStatus() === \MailPoet\Models\Newsletter::STATUS_DRAFT) {
$newsletter->save(); $newsletter->setStatus(\MailPoet\Models\Newsletter::STATUS_SENT);
$newsletter->setSentAt(Carbon::createFromFormat('Y-m-d H:i:s', $sentAt));
$entityManager->flush();
} }
return [ return [
'newsletter_id' => $newsletter->id, 'newsletter_id' => $newsletter->getId(),
'task_id' => $task->id, 'task_id' => $task->id,
'queue_id' => $queue->id, 'queue_id' => $queue->id,
'sent_at' => strtotime($sentAt), 'sent_at' => strtotime($sentAt),
'link_id' => $link->id, 'link_id' => $link->getId(),
]; ];
} }