Filter click stats by newsletter send time

MAILPOET-5508
This commit is contained in:
John Oleksowicz
2023-08-29 10:31:20 -05:00
committed by Aschepikov
parent 44b1ab580f
commit 2987c61d77
2 changed files with 14 additions and 7 deletions

View File

@ -48,9 +48,7 @@ class SubscriberStatisticsRepository extends Repository {
public function getStatisticsClickCount(SubscriberEntity $subscriber, ?Carbon $startTime = null): int {
$queryBuilder = $this->getStatisticsCountQuery(StatisticsClickEntity::class, $subscriber);
if ($startTime) {
$queryBuilder
->andWhere('stats.createdAt >= :dateTime')
->setParameter('dateTime', $startTime);
$this->applyDateConstraint($queryBuilder, $startTime);
}
return (int)$queryBuilder
->getQuery()
@ -60,8 +58,7 @@ class SubscriberStatisticsRepository extends Repository {
public function getStatisticsOpenCountQuery(SubscriberEntity $subscriber, ?Carbon $startTime = null): QueryBuilder {
$queryBuilder = $this->getStatisticsCountQuery(StatisticsOpenEntity::class, $subscriber);
if ($startTime) {
$queryBuilder->join(StatisticsNewsletterEntity::class, 'sent_stats', 'WITH', 'stats.newsletter = sent_stats.newsletter AND sent_stats.sentAt >= :dateTime')
->setParameter('dateTime', $startTime);
$this->applyDateConstraint($queryBuilder, $startTime);
}
return $queryBuilder;
}
@ -133,4 +130,11 @@ class SubscriberStatisticsRepository extends Repository {
$this->wcHelper
);
}
private function applyDateConstraint(QueryBuilder $queryBuilder, Carbon $startTime): QueryBuilder {
$queryBuilder->join(StatisticsNewsletterEntity::class, 'sent_stats', 'WITH', 'stats.newsletter = sent_stats.newsletter AND stats.subscriber = sent_stats.subscriber AND sent_stats.sentAt >= :dateTime')
->setParameter('dateTime', $startTime);
return $queryBuilder;
}
}