*/ class WooCommerceSubscriptionSubject implements Subject { public const KEY = 'woocommerce-subscriptions:subscription'; /** @var WCS */ private $wcs; /** @var SubscriptionFields */ private $subscriptionFields; public function __construct( WCS $wcs, SubscriptionFields $subscriptionFields ) { $this->wcs = $wcs; $this->subscriptionFields = $subscriptionFields; } public function getKey(): string { return self::KEY; } public function getName(): string { // translators: automation subject (entity entering automation) title return __('WooCommerce Subscription', 'mailpoet-premium'); } public function getArgsSchema(): ObjectSchema { return Builder::object([ 'subscription_id' => Builder::integer()->required(), ]); } public function getFields(): array { return $this->subscriptionFields->getFields(); } public function getPayload(SubjectData $subjectData): Payload { $id = $subjectData->getArgs()['subscription_id']; $subscription = $this->wcs->wcsGetSubscription($id); if (!$subscription instanceof \WC_Subscription) { // translators: %d is the order ID. throw NotFoundException::create()->withMessage(sprintf(__("Subscription with ID '%d' not found.", 'mailpoet-premium'), $id)); } return new WooCommerceSubscriptionPayload($subscription); } }