ChangeSubscriptionStatus.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\CustomerGraphQl\Model\Customer;
  8. use Magento\Newsletter\Model\SubscriberFactory;
  9. /**
  10. * Change subscription status. Subscribe OR unsubscribe if required
  11. */
  12. class ChangeSubscriptionStatus
  13. {
  14. /**
  15. * @var SubscriberFactory
  16. */
  17. private $subscriberFactory;
  18. /**
  19. * @param SubscriberFactory $subscriberFactory
  20. */
  21. public function __construct(
  22. SubscriberFactory $subscriberFactory
  23. ) {
  24. $this->subscriberFactory = $subscriberFactory;
  25. }
  26. /**
  27. * Change subscription status. Subscribe OR unsubscribe if required
  28. *
  29. * @param int $customerId
  30. * @param bool $subscriptionStatus
  31. * @return void
  32. */
  33. public function execute(int $customerId, bool $subscriptionStatus): void
  34. {
  35. $subscriber = $this->subscriberFactory->create()->loadByCustomerId($customerId);
  36. if ($subscriptionStatus === true && !$subscriber->isSubscribed()) {
  37. $this->subscriberFactory->create()->subscribeCustomerById($customerId);
  38. } elseif ($subscriptionStatus === false && $subscriber->isSubscribed()) {
  39. $this->subscriberFactory->create()->unsubscribeCustomerById($customerId);
  40. }
  41. }
  42. }