Refactor click tracking to Doctrine

[MAILPOET-3735]
This commit is contained in:
Pavel Dohnal
2021-08-17 13:51:26 +02:00
committed by Veljko V
parent 7197be3116
commit 0b675680ef
5 changed files with 64 additions and 27 deletions

View File

@@ -0,0 +1,40 @@
<?php declare(strict_types=1);
namespace MailPoet\Statistics;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsClickEntity;
use MailPoet\Entities\SubscriberEntity;
/**
* @extends Repository<StatisticsClickEntity>
*/
class StatisticsClicksRepository extends Repository {
protected function getEntityClassName(): string {
return StatisticsClickEntity::class;
}
public function createOrUpdateClickCount(
NewsletterLinkEntity $link,
SubscriberEntity $subscriber,
NewsletterEntity $newsletter,
SendingQueueEntity $queue
): StatisticsClickEntity {
$statistics = $this->findOneBy([
'link' => $link,
'newsletter' => $newsletter,
'subscriber' => $subscriber,
'queue' => $queue,
]);
if (!$statistics instanceof StatisticsClickEntity) {
$statistics = new StatisticsClickEntity($newsletter, $queue, $subscriber, $link, 1);
$this->persist($statistics);
} else {
$statistics->setCount($statistics->getCount() + 1);
}
return $statistics;
}
}