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\DynamicSegmentFilterEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||||
|
use MailPoet\Segments\SegmentsRepository;
|
||||||
use MailPoet\Util\Security;
|
use MailPoet\Util\Security;
|
||||||
use MailPoetVendor\Doctrine\DBAL\Connection;
|
use MailPoetVendor\Doctrine\DBAL\Connection;
|
||||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||||
@@ -17,10 +18,15 @@ class SubscriberSegment implements Filter {
|
|||||||
/** @var EntityManager */
|
/** @var EntityManager */
|
||||||
private $entityManager;
|
private $entityManager;
|
||||||
|
|
||||||
|
/** @var SegmentsRepository */
|
||||||
|
private $segmentsRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
EntityManager $entityManager
|
EntityManager $entityManager,
|
||||||
|
SegmentsRepository $segmentsRepository
|
||||||
) {
|
) {
|
||||||
$this->entityManager = $entityManager;
|
$this->entityManager = $entityManager;
|
||||||
|
$this->segmentsRepository = $segmentsRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function apply(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): QueryBuilder {
|
public function apply(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): QueryBuilder {
|
||||||
@@ -61,6 +67,14 @@ class SubscriberSegment implements Filter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getLookupData(DynamicSegmentFilterData $filterData): array {
|
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\SegmentEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||||
|
use MailPoet\Test\DataFactories\Segment;
|
||||||
use MailPoetVendor\Carbon\CarbonImmutable;
|
use MailPoetVendor\Carbon\CarbonImmutable;
|
||||||
|
|
||||||
class SubscriberSegmentTest extends \MailPoetTest {
|
class SubscriberSegmentTest extends \MailPoetTest {
|
||||||
@@ -66,6 +67,17 @@ class SubscriberSegmentTest extends \MailPoetTest {
|
|||||||
$this->assertEqualsCanonicalizing(['a2@example.com', 'a3@example.com'], $emails);
|
$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 {
|
private function getSegmentFilterData(string $operator, array $segments): DynamicSegmentFilterData {
|
||||||
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, SubscriberSegment::TYPE, [
|
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, SubscriberSegment::TYPE, [
|
||||||
'operator' => $operator,
|
'operator' => $operator,
|
||||||
|
Reference in New Issue
Block a user