40 lines
1.2 KiB
PHP
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()]);
|
|
}
|
|
}
|