src/EntityCallback/MembershipCallback.php line 42

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright (c) 2011-present Qualiteam software Ltd. All rights reserved.
  4.  * See https://www.x-cart.com/license-agreement.html for license details.
  5.  */
  6. namespace XCart\EntityCallback;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Doctrine\Persistence\Event\LifecycleEventArgs;
  9. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  10. use XCart\Doctrine\CallbackManager\CallbackManager;
  11. use XCart\Event\Service\DeferrerCallbackRunEvent;
  12. use XLite\Core\QuickData;
  13. use XLite\Model\Membership;
  14. class MembershipCallback
  15. {
  16.     private QuickData $quickData;
  17.     public function __construct(
  18.         private CallbackManager $callbackManager,
  19.         private EntityManagerInterface $entityManager
  20.     ) {
  21.         $this->quickData \XLite\Core\QuickData::getInstance();
  22.     }
  23.     public function postPersist(Membership $membershipLifecycleEventArgs $args): void
  24.     {
  25.         $context $this->callbackManager->getContextValue();
  26.         if (!in_array($context, ['import''load-fixtures'], true) && $membership->getProducts()) {
  27.             $this->callbackManager->addDeferredCallback(
  28.                 'quickDataMembershipRecalculate',
  29.                 [
  30.                     $membership->getMembershipId()
  31.                 ]
  32.             );
  33.         }
  34.     }
  35.     public function runQuickData(
  36.         DeferrerCallbackRunEvent $callbackRunEvent,
  37.         string $eventName,
  38.         EventDispatcherInterface $dispatcher
  39.     ): void {
  40.         if ($dtos $callbackRunEvent->getCallbackDto('quickDataMembershipRecalculate')) {
  41.             foreach ($dtos as $dto) {
  42.                 if ($membershipId $dto->getArgs()[0]) {
  43.                     $membership $this->entityManager
  44.                         ->getRepository(Membership::class)
  45.                         ->find($membershipId);
  46.                     if ($membership) {
  47.                         $this->quickData->updateMembershipData($membership);
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.     }
  53. }