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\SegmentListingRepository;
|
||||||
use MailPoet\Segments\SegmentSaveController;
|
use MailPoet\Segments\SegmentSaveController;
|
||||||
use MailPoet\Segments\SegmentsRepository;
|
use MailPoet\Segments\SegmentsRepository;
|
||||||
|
use MailPoet\Segments\SegmentSubscribersRepository;
|
||||||
use MailPoet\Segments\WooCommerce;
|
use MailPoet\Segments\WooCommerce;
|
||||||
use MailPoet\Segments\WP;
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
@@ -63,12 +64,16 @@ class Segments extends APIEndpoint {
|
|||||||
/** @var FormsRepository */
|
/** @var FormsRepository */
|
||||||
private $formsRepository;
|
private $formsRepository;
|
||||||
|
|
||||||
|
/** @var SegmentSubscribersRepository */
|
||||||
|
private $segmentSubscribersRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Listing\Handler $listingHandler,
|
Listing\Handler $listingHandler,
|
||||||
SegmentsRepository $segmentsRepository,
|
SegmentsRepository $segmentsRepository,
|
||||||
SegmentListingRepository $segmentListingRepository,
|
SegmentListingRepository $segmentListingRepository,
|
||||||
SegmentsResponseBuilder $segmentsResponseBuilder,
|
SegmentsResponseBuilder $segmentsResponseBuilder,
|
||||||
SegmentSaveController $segmentSavecontroller,
|
SegmentSaveController $segmentSavecontroller,
|
||||||
|
SegmentSubscribersRepository $segmentSubscribersRepository,
|
||||||
SubscribersRepository $subscribersRepository,
|
SubscribersRepository $subscribersRepository,
|
||||||
WooCommerce $wooCommerce,
|
WooCommerce $wooCommerce,
|
||||||
WP $wpSegment,
|
WP $wpSegment,
|
||||||
@@ -87,6 +92,7 @@ class Segments extends APIEndpoint {
|
|||||||
$this->newsletterSegmentRepository = $newsletterSegmentRepository;
|
$this->newsletterSegmentRepository = $newsletterSegmentRepository;
|
||||||
$this->cronWorkerScheduler = $cronWorkerScheduler;
|
$this->cronWorkerScheduler = $cronWorkerScheduler;
|
||||||
$this->formsRepository = $formsRepository;
|
$this->formsRepository = $formsRepository;
|
||||||
|
$this->segmentSubscribersRepository = $segmentSubscribersRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get($data = []) {
|
public function get($data = []) {
|
||||||
@@ -294,6 +300,20 @@ class Segments extends APIEndpoint {
|
|||||||
return $this->successResponse(null, ['count' => $count]);
|
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 {
|
private function isTrashOrRestoreAllowed(SegmentEntity $segment): bool {
|
||||||
$allowedSegmentTypes = [
|
$allowedSegmentTypes = [
|
||||||
SegmentEntity::TYPE_DEFAULT,
|
SegmentEntity::TYPE_DEFAULT,
|
||||||
|
Reference in New Issue
Block a user