custom/plugins/CioSalesRepresentative/src/Subscriber/OrderCreateSubscriber.php line 61

Open in your IDE?
  1. <?php
  2. namespace CioSalesRepresentative\Subscriber;
  3. use CioMasterdata\Definition\Masterdata\MasterdataEntity;
  4. use CioMasterdata\Service\MasterdataService;
  5. use CioOrderConfirmation\Event\AuthorizedReleaserBeforeSendMailEvent;
  6. use CioSalesRepresentative\DataResolver\SalesrepDataResolver;
  7. use CioSalesRepresentative\Definition\SalesRepresentative\SalesRepresentativeEntity;
  8. use Shopware\Core\Checkout\Customer\CustomerEntity;
  9. use Shopware\Core\Framework\Context;
  10. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  11. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  12. use Shopware\Core\Framework\DataAbstractionLayer\Search\EntitySearchResult;
  13. use Shopware\Storefront\Event\StorefrontRenderEvent;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Component\HttpFoundation\Session\Session;
  16. class OrderCreateSubscriber implements EventSubscriberInterface
  17. {
  18.     private EntityRepositoryInterface $salesRepRepository;
  19.     private Session $session;
  20.     private MasterdataService $masterdataService;
  21.     public function __construct(EntityRepositoryInterface $salesRepRepositorySession $sessionMasterdataService $masterdataService)
  22.     {
  23.         $this->salesRepRepository $salesRepRepository;
  24.         $this->session $session;
  25.         $this->masterdataService $masterdataService;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             AuthorizedReleaserBeforeSendMailEvent::class => 'onAuthorizedReleaserBeforeSendMailEvent',
  31.             StorefrontRenderEvent::class => 'onStorefrontRenderEvent'
  32.         ];
  33.     }
  34.     public function onAuthorizedReleaserBeforeSendMailEvent(AuthorizedReleaserBeforeSendMailEvent $event)
  35.     {
  36.         $order $event->getOrder();
  37.         $customer $event->getCustomer();
  38.         $salesRepId null;
  39.         $masterdatas $this->masterdataService->getMasterdatasForCustomer($customer);
  40.         /** @var MasterdataEntity|null $masterdata */
  41.         if ($masterdatas instanceof EntitySearchResult && ($masterdata $masterdatas->first()) instanceof MasterdataEntity) {
  42.             $salesRepId $masterdata->getVPartnerId();
  43.         }
  44.         if(!is_null($salesRepId)){
  45.             /** @var SalesRepresentativeEntity $salesRepResult */
  46.             $salesRepResult $this->salesRepRepository->search(new Criteria([$salesRepId]), Context::createDefaultContext())->first();
  47.             $event->setAuthorizedReleaserEmail($salesRepResult->getEmail());
  48.         }
  49.     }
  50.     public function onStorefrontRenderEvent(StorefrontRenderEvent $event)
  51.     {
  52.         if ($event->getSalesChannelContext()->getCustomer() instanceof CustomerEntity && $this->session->has('cio_master_login') && $this->session->get('cio_master_login') != $event->getSalesChannelContext()->getCustomer()->getId()) {
  53.             $event->setParameter('cio_master_login_show_bar'true);
  54.         } else {
  55.             $event->setParameter('cio_master_login_show_bar'false);
  56.         }
  57.     }
  58. }