init
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
|
||||
|
||||
namespace MailPoet\Statistics;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
|
||||
use MailPoet\Doctrine\Repository;
|
||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
/**
|
||||
* @extends Repository<StatisticsUnsubscribeEntity>
|
||||
*/
|
||||
class StatisticsUnsubscribesRepository extends Repository {
|
||||
protected function getEntityClassName() {
|
||||
return StatisticsUnsubscribeEntity::class;
|
||||
}
|
||||
|
||||
public function getTotalForMonths(int $forMonths): int {
|
||||
$from = (new Carbon())->subMonths($forMonths);
|
||||
$count = $this->entityManager->createQueryBuilder()
|
||||
->select('count(stats.id)')
|
||||
->from(StatisticsUnsubscribeEntity::class, 'stats')
|
||||
->andWhere('stats.createdAt >= :dateTime')
|
||||
->setParameter('dateTime', $from)
|
||||
->getQuery()
|
||||
->getSingleScalarResult();
|
||||
|
||||
return intval($count);
|
||||
}
|
||||
|
||||
public function getCountPerMethodForMonths(int $forMonths): array {
|
||||
$from = (new Carbon())->subMonths($forMonths);
|
||||
return $this->entityManager->createQueryBuilder()
|
||||
->select('count(stats.id) as count, stats.method as method')
|
||||
->from(StatisticsUnsubscribeEntity::class, 'stats')
|
||||
->andWhere('stats.createdAt >= :dateTime')
|
||||
->groupBy('stats.method')
|
||||
->setParameter('dateTime', $from)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user