Add lookup data retrieval for subscribed to list
MAILPOET-5625
This commit is contained in:
committed by
Aschepikov
parent
af9a6cbb67
commit
d1f77d3ee5
@ -6,6 +6,7 @@ use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Util\Security;
|
||||
use MailPoetVendor\Doctrine\DBAL\Connection;
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
@ -17,10 +18,15 @@ class SubscriberSegment implements Filter {
|
||||
/** @var EntityManager */
|
||||
private $entityManager;
|
||||
|
||||
/** @var SegmentsRepository */
|
||||
private $segmentsRepository;
|
||||
|
||||
public function __construct(
|
||||
EntityManager $entityManager
|
||||
EntityManager $entityManager,
|
||||
SegmentsRepository $segmentsRepository
|
||||
) {
|
||||
$this->entityManager = $entityManager;
|
||||
$this->segmentsRepository = $segmentsRepository;
|
||||
}
|
||||
|
||||
public function apply(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): QueryBuilder {
|
||||
@ -61,6 +67,14 @@ class SubscriberSegment implements Filter {
|
||||
}
|
||||
|
||||
public function getLookupData(DynamicSegmentFilterData $filterData): array {
|
||||
return [];
|
||||
$lookupData = [
|
||||
'segments' => [],
|
||||
];
|
||||
$segmentIds = $filterData->getArrayParam('segments');
|
||||
$segments = $this->segmentsRepository->findBy(['id' => $segmentIds]);
|
||||
foreach ($segments as $segment) {
|
||||
$lookupData['segments'][$segment->getId()] = $segment->getName();
|
||||
}
|
||||
return $lookupData;
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\SegmentEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoet\Test\DataFactories\Segment;
|
||||
use MailPoetVendor\Carbon\CarbonImmutable;
|
||||
|
||||
class SubscriberSegmentTest extends \MailPoetTest {
|
||||
@ -66,6 +67,17 @@ class SubscriberSegmentTest extends \MailPoetTest {
|
||||
$this->assertEqualsCanonicalizing(['a2@example.com', 'a3@example.com'], $emails);
|
||||
}
|
||||
|
||||
public function testItRetrievesLookupData(): void {
|
||||
$segment = (new Segment())->withName('test segment')->create();
|
||||
$data = $this->getSegmentFilterData('all', [$segment->getId(), 293847]);
|
||||
$lookupData = $this->filter->getLookupData($data);
|
||||
$this->assertEqualsCanonicalizing([
|
||||
'segments' => [
|
||||
$segment->getId() => $segment->getName(),
|
||||
],
|
||||
], $lookupData);
|
||||
}
|
||||
|
||||
private function getSegmentFilterData(string $operator, array $segments): DynamicSegmentFilterData {
|
||||
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, SubscriberSegment::TYPE, [
|
||||
'operator' => $operator,
|
||||
|
Reference in New Issue
Block a user