Add endpoint to retrieve count for multiple segments
MAILPOET-5510
This commit is contained in:
committed by
Aschepikov
parent
6b2b35b541
commit
a2d04e93c5
@@ -20,6 +20,7 @@ use MailPoet\Newsletter\Segment\NewsletterSegmentRepository;
|
||||
use MailPoet\Segments\SegmentListingRepository;
|
||||
use MailPoet\Segments\SegmentSaveController;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Segments\SegmentSubscribersRepository;
|
||||
use MailPoet\Segments\WooCommerce;
|
||||
use MailPoet\Segments\WP;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
@@ -63,12 +64,16 @@ class Segments extends APIEndpoint {
|
||||
/** @var FormsRepository */
|
||||
private $formsRepository;
|
||||
|
||||
/** @var SegmentSubscribersRepository */
|
||||
private $segmentSubscribersRepository;
|
||||
|
||||
public function __construct(
|
||||
Listing\Handler $listingHandler,
|
||||
SegmentsRepository $segmentsRepository,
|
||||
SegmentListingRepository $segmentListingRepository,
|
||||
SegmentsResponseBuilder $segmentsResponseBuilder,
|
||||
SegmentSaveController $segmentSavecontroller,
|
||||
SegmentSubscribersRepository $segmentSubscribersRepository,
|
||||
SubscribersRepository $subscribersRepository,
|
||||
WooCommerce $wooCommerce,
|
||||
WP $wpSegment,
|
||||
@@ -87,6 +92,7 @@ class Segments extends APIEndpoint {
|
||||
$this->newsletterSegmentRepository = $newsletterSegmentRepository;
|
||||
$this->cronWorkerScheduler = $cronWorkerScheduler;
|
||||
$this->formsRepository = $formsRepository;
|
||||
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
|
||||
}
|
||||
|
||||
public function get($data = []) {
|
||||
@@ -294,6 +300,20 @@ class Segments extends APIEndpoint {
|
||||
return $this->successResponse(null, ['count' => $count]);
|
||||
}
|
||||
|
||||
public function subscriberCount($data = []) {
|
||||
$segmentIds = $data['segmentIds'] ?? [];
|
||||
if (empty($segmentIds)) {
|
||||
return $this->errorResponse([
|
||||
APIError::BAD_REQUEST => __('No segment IDs provided.', 'mailpoet'),
|
||||
]);
|
||||
}
|
||||
$filterSegmentId = $data['filterSegmentId'] ?? null;
|
||||
$status = $data['status'] ?? SubscriberEntity::STATUS_SUBSCRIBED;
|
||||
$response['count'] = $this->segmentSubscribersRepository->getSubscribersCountBySegmentIds($segmentIds, $status, $filterSegmentId);
|
||||
|
||||
return $this->successResponse($response);
|
||||
}
|
||||
|
||||
private function isTrashOrRestoreAllowed(SegmentEntity $segment): bool {
|
||||
$allowedSegmentTypes = [
|
||||
SegmentEntity::TYPE_DEFAULT,
|
||||
|
Reference in New Issue
Block a user