src/Service/App/Merchant/Subscription/Listener/ConfirmPaymentListener.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Service\App\Merchant\Subscription\Listener;
  3. use App\Entity\Merchant\PlanProjectNotificationSettingsEntity;
  4. use App\Entity\Merchant\PlanSubscriptionEntity;
  5. use App\Repository\Merchant\Contract\IOrderRepository;
  6. use App\Service\App\Merchant\CustomFeature\Implementation\SubscriptionCustomFeature;
  7. use App\Service\App\Merchant\Payment\Event\ConfirmPaymentEvent;
  8. use App\Service\App\Merchant\Subscription\Contract\ISendSubscriptionNotificationService;
  9. use App\Types\PlanProjectNotificationType;
  10. use App\Types\SubscriptionChangeType;
  11. class ConfirmPaymentListener extends AbstractSubscriptionListener
  12. {
  13.     /**
  14.      * Constructor
  15.      *
  16.      * @param SubscriptionCustomFeature $subscriptionCustomFeature
  17.      * @param IOrderRepository $orderRepository
  18.      * @param ISendSubscriptionNotificationService $sendSubscriptionNotificationService
  19.      */
  20.     public function __construct(
  21.         SubscriptionCustomFeature $subscriptionCustomFeature,
  22.         IOrderRepository $orderRepository,
  23.         ISendSubscriptionNotificationService $sendSubscriptionNotificationService
  24.     )
  25.     {
  26.         parent::__construct($subscriptionCustomFeature$orderRepository$sendSubscriptionNotificationService);
  27.     }
  28.     /**
  29.      * Listen on confirm payment event
  30.      *
  31.      * @param ConfirmPaymentEvent $event
  32.      * @return void
  33.      */
  34.     public function onAction(ConfirmPaymentEvent $event): void
  35.     {
  36.         $this->handleEvent($event->getRequest()->getId(), PlanProjectNotificationType::NOTIFICATION_RENEW_SUCCEED);
  37.     }
  38.     /**
  39.      * Check if notification should be sent
  40.      *
  41.      * @param PlanProjectNotificationSettingsEntity|null $notificationSettings
  42.      * @param PlanSubscriptionEntity $subscription
  43.      * @return bool
  44.      */
  45.     protected function shouldSend(
  46.         ?PlanProjectNotificationSettingsEntity $notificationSettingsPlanSubscriptionEntity $subscription
  47.     ): bool
  48.     {
  49.         if ($subscription->getChangeType() == SubscriptionChangeType::TYPE_CHANGE_BILLING_DETAILS) {
  50.             return false;
  51.         }
  52.         if (!$subscription->hasSubscriptionPlan()) {
  53.             return false;
  54.         }
  55.         return $notificationSettings?->isNotificationSucceed() ?? false;
  56.     }
  57. }