Refactor api for creating/updating dynamic segments
[MAILPOET-3177]
This commit is contained in:
committed by
Veljko V
parent
64b078c7be
commit
9fdebdb4d7
@ -4,6 +4,8 @@ namespace MailPoet\Segments;
|
||||
|
||||
use DateTime;
|
||||
use MailPoet\Doctrine\Repository;
|
||||
use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoet\Entities\SegmentEntity;
|
||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoet\NotFoundException;
|
||||
@ -58,6 +60,8 @@ class SegmentsRepository extends Repository {
|
||||
public function createOrUpdate(
|
||||
string $name,
|
||||
string $description = '',
|
||||
string $type = SegmentEntity::TYPE_DEFAULT,
|
||||
?DynamicSegmentFilterData $filterData = null,
|
||||
?int $id = null
|
||||
): SegmentEntity {
|
||||
if ($id) {
|
||||
@ -68,9 +72,21 @@ class SegmentsRepository extends Repository {
|
||||
$segment->setName($name);
|
||||
$segment->setDescription($description);
|
||||
} else {
|
||||
$segment = new SegmentEntity($name, SegmentEntity::TYPE_DEFAULT, $description);
|
||||
$segment = new SegmentEntity($name, $type, $description);
|
||||
$this->persist($segment);
|
||||
}
|
||||
|
||||
if ($filterData instanceof DynamicSegmentFilterData) {
|
||||
// So far we allow only one filter
|
||||
$filterEntity = $segment->getDynamicFilters()->first();
|
||||
if (!$filterEntity instanceof DynamicSegmentFilterEntity) {
|
||||
$filterEntity = new DynamicSegmentFilterEntity($segment, $filterData);
|
||||
$segment->getDynamicFilters()->add($filterEntity);
|
||||
$this->entityManager->persist($filterEntity);
|
||||
} else {
|
||||
$filterEntity->setFilterData($filterData);
|
||||
}
|
||||
}
|
||||
$this->flush();
|
||||
return $segment;
|
||||
}
|
||||
|
Reference in New Issue
Block a user