Refactor Statistics Entities to use association

[MAILPOET-3069]
This commit is contained in:
Pavel Dohnal
2020-08-05 14:55:38 +02:00
committed by Veljko V
parent 79b26e6ace
commit c1c5885398
8 changed files with 54 additions and 33 deletions

View File

@@ -5,8 +5,10 @@ namespace MailPoet\Statistics\Track;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsUnsubscribeEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Statistics\StatisticsUnsubscribesRepository;
use MailPoet\Subscribers\SubscribersRepository;
class Unsubscribes {
/** @var SendingQueuesRepository */
@@ -15,12 +17,19 @@ class Unsubscribes {
/** @var StatisticsUnsubscribesRepository */
private $statisticsUnsubscribesRepository;
/**
* @var SubscribersRepository
*/
private $subscribersRepository;
public function __construct(
SendingQueuesRepository $sendingQueuesRepository,
StatisticsUnsubscribesRepository $statisticsUnsubscribesRepository
StatisticsUnsubscribesRepository $statisticsUnsubscribesRepository,
SubscribersRepository $subscribersRepository
) {
$this->sendingQueuesRepository = $sendingQueuesRepository;
$this->statisticsUnsubscribesRepository = $statisticsUnsubscribesRepository;
$this->subscribersRepository = $subscribersRepository;
}
public function track(int $subscriberId, string $source, int $queueId = null, string $meta = null) {
@@ -29,24 +38,28 @@ class Unsubscribes {
if ($queueId) {
$queue = $this->sendingQueuesRepository->findOneById($queueId);
}
if ($queue instanceof SendingQueueEntity) {
$subscriber = $this->subscribersRepository->findOneById($subscriberId);
if (!$subscriber instanceof SubscriberEntity) {
return;
}
if (($queue instanceof SendingQueueEntity)) {
$newsletter = $queue->getNewsletter();
if ($newsletter instanceof NewsletterEntity) {
$statistics = $this->statisticsUnsubscribesRepository->findOneBy(
[
'queue' => $queue,
'newsletter' => $newsletter,
'subscriberId' => $subscriberId,
'subscriber' => $subscriber,
]
);
if (!$statistics) {
$statistics = new StatisticsUnsubscribeEntity($newsletter, $queue, $subscriberId);
$statistics = new StatisticsUnsubscribeEntity($newsletter, $queue, $subscriber);
}
}
}
if ($statistics === null) {
$statistics = new StatisticsUnsubscribeEntity(null, null, $subscriberId);
$statistics = new StatisticsUnsubscribeEntity(null, null, $subscriber);
}
if ($meta !== null) {
$statistics->setMeta($meta);