Files
piratepoet/mailpoet/lib/Automation/Integrations/MailPoet/SubjectTransformers/OrderSubjectToSegmentSubjectTransformer.php
David Remer a3ebd0695b Introduce Order to Segment transformer
[MAILPOET-4935]
2023-03-30 12:21:25 +02:00

40 lines
1.2 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Automation\Integrations\MailPoet\SubjectTransformers;
use MailPoet\Automation\Engine\Data\Subject;
use MailPoet\Automation\Engine\Integration\SubjectTransformer;
use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject;
use MailPoet\Segments\SegmentsRepository;
class OrderSubjectToSegmentSubjectTransformer implements SubjectTransformer {
/** @var SegmentsRepository */
private $segmentRepository;
public function __construct(
SegmentsRepository $segmentRepository
) {
$this->segmentRepository = $segmentRepository;
}
public function accepts(): string {
return OrderSubject::KEY;
}
public function returns(): string {
return SegmentSubject::KEY;
}
public function transform(Subject $data): Subject {
if ($this->accepts() !== $data->getKey()) {
throw new \InvalidArgumentException('Invalid subject type');
}
$wooCommerceSegment = $this->segmentRepository->getWooCommerceSegment();
return new Subject(SegmentSubject::KEY, ['segment_id' => $wooCommerceSegment->getId()]);
}
}