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()]); } }