Refactor Statistics Entities to use association
[MAILPOET-3069]
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user