Add endpoint for subscriber statistics

[MAILPOET-3069]
This commit is contained in:
Pavel Dohnal
2020-08-05 15:11:22 +02:00
committed by Veljko V
parent c1c5885398
commit d96d207c53
4 changed files with 141 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
<?php
namespace MailPoet\API\JSON\v1;
use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError;
use MailPoet\Config\AccessControl;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Subscribers\Statistics\SubscriberStatisticsRepository;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\WP\Functions as WPFunctions;
class SubscriberStats extends APIEndpoint {
public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
];
/** @var SubscribersRepository */
private $subscribersRepository;
/** @var SubscriberStatisticsRepository */
private $subscribersStatisticsRepository;
public function __construct(
SubscribersRepository $subscribersRepository,
SubscriberStatisticsRepository $subscribersStatisticsRepository
) {
$this->subscribersRepository = $subscribersRepository;
$this->subscribersStatisticsRepository = $subscribersStatisticsRepository;
}
public function get($data) {
$subscriber = isset($data['subscriber_id'])
? $this->subscribersRepository->findOneById((int)$data['subscriber_id'])
: null;
if (!$subscriber instanceof SubscriberEntity) {
return $this->errorResponse([
APIError::NOT_FOUND => WPFunctions::get()->__('This subscriber does not exist.', 'mailpoet'),
]);
}
$statistics = $this->subscribersStatisticsRepository->getStatistics($subscriber);
return $this->successResponse([
'email' => $subscriber->getEmail(),
'total_sent' => $statistics->getTotalSentCount(),
'open' => $statistics->getOpenCount(),
'click' => $statistics->getClickCount(),
]);
}
}