Save bounces statistics

[MAILPOET-3765]
This commit is contained in:
Pavel Dohnal
2021-09-07 10:47:40 +02:00
committed by Veljko V
parent 4ed3b3e5ba
commit 1f6836dae6
3 changed files with 29 additions and 1 deletions

View File

@@ -2,7 +2,9 @@
namespace MailPoet\Cron\Workers; namespace MailPoet\Cron\Workers;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\StatisticsBounceEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
@@ -12,6 +14,7 @@ use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Services\Bridge\API; use MailPoet\Services\Bridge\API;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Statistics\StatisticsBouncesRepository;
use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Tasks\Bounce as BounceTask; use MailPoet\Tasks\Bounce as BounceTask;
use MailPoet\Tasks\Subscribers as TaskSubscribers; use MailPoet\Tasks\Subscribers as TaskSubscribers;
@@ -43,11 +46,15 @@ class Bounce extends SimpleWorker {
/** @var SendingQueuesRepository */ /** @var SendingQueuesRepository */
private $sendingQueuesRepository; private $sendingQueuesRepository;
/** @var StatisticsBouncesRepository */
private $statisticsBouncesRepository;
public function __construct( public function __construct(
SettingsController $settings, SettingsController $settings,
SubscribersRepository $subscribersRepository, SubscribersRepository $subscribersRepository,
ScheduledTasksRepository $scheduledTasksRepository, ScheduledTasksRepository $scheduledTasksRepository,
SendingQueuesRepository $sendingQueuesRepository, SendingQueuesRepository $sendingQueuesRepository,
StatisticsBouncesRepository $statisticsBouncesRepository,
Bridge $bridge Bridge $bridge
) { ) {
$this->settings = $settings; $this->settings = $settings;
@@ -56,6 +63,7 @@ class Bounce extends SimpleWorker {
$this->subscribersRepository = $subscribersRepository; $this->subscribersRepository = $subscribersRepository;
$this->scheduledTasksRepository = $scheduledTasksRepository; $this->scheduledTasksRepository = $scheduledTasksRepository;
$this->sendingQueuesRepository = $sendingQueuesRepository; $this->sendingQueuesRepository = $sendingQueuesRepository;
$this->statisticsBouncesRepository = $statisticsBouncesRepository;
} }
public function init() { public function init() {
@@ -148,7 +156,11 @@ class Bounce extends SimpleWorker {
} }
$queues = $this->sendingQueuesRepository->findAllForSubscriberSentBetween($subscriber, $taskEntity->getScheduledAt(), $dateFrom); $queues = $this->sendingQueuesRepository->findAllForSubscriberSentBetween($subscriber, $taskEntity->getScheduledAt(), $dateFrom);
foreach ($queues as $queue) { foreach ($queues as $queue) {
// todo save statistics $newsletter = $queue->getNewsletter();
if ($newsletter instanceof NewsletterEntity) {
$statistics = new StatisticsBounceEntity($newsletter, $queue, $subscriber);
$this->statisticsBouncesRepository->persist($statistics);
}
} }
} }
} }

View File

@@ -238,6 +238,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Statistics\Track\WooCommercePurchases::class); $container->autowire(\MailPoet\Statistics\Track\WooCommercePurchases::class);
$container->autowire(\MailPoet\Statistics\Track\Unsubscribes::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\Track\Unsubscribes::class)->setPublic(true);
$container->autowire(\MailPoet\Statistics\StatisticsFormsRepository::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\StatisticsFormsRepository::class)->setPublic(true);
$container->autowire(\MailPoet\Statistics\StatisticsBouncesRepository::class)->setPublic(true);
$container->autowire(\MailPoet\Statistics\StatisticsClicksRepository::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\StatisticsClicksRepository::class)->setPublic(true);
$container->autowire(\MailPoet\Statistics\StatisticsOpensRepository::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\StatisticsOpensRepository::class)->setPublic(true);
$container->autowire(\MailPoet\Statistics\StatisticsUnsubscribesRepository::class); $container->autowire(\MailPoet\Statistics\StatisticsUnsubscribesRepository::class);

View File

@@ -0,0 +1,15 @@
<?php declare(strict_types=1);
namespace MailPoet\Statistics;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\StatisticsBounceEntity;
/**
* @extends Repository<StatisticsBounceEntity>
*/
class StatisticsBouncesRepository extends Repository {
protected function getEntityClassName(): string {
return StatisticsBounceEntity::class;
}
}