custom/plugins/CioMasterdata/src/Subscriber/CustomerLoginSubscriber.php line 36

Open in your IDE?
  1. <?php
  2. namespace CioMasterdata\Subscriber;
  3. use CioMasterdata\Definition\Masterdata\MasterdataEntity;
  4. use CioMasterdata\Service\MasterdataService;
  5. use Shopware\Core\Checkout\Customer\Event\CustomerLoginEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. class CustomerLoginSubscriber implements EventSubscriberInterface
  10. {
  11.     private MasterdataService $masterdataService;
  12.     private RequestStack $requestStack;
  13.     private TranslatorInterface $translator;
  14.     public function __construct(MasterdataService $masterdataServiceRequestStack $requestStackTranslatorInterface $translator)
  15.     {
  16.         $this->masterdataService $masterdataService;
  17.         $this->requestStack $requestStack;
  18.         $this->translator $translator;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             CustomerLoginEvent::class => 'onCustomerLoginEvent'
  24.         ];
  25.     }
  26.     /**
  27.      * @param CustomerLoginEvent $event
  28.      * @return void
  29.      */
  30.     public function onCustomerLoginEvent(CustomerLoginEvent $event)
  31.     {
  32.         $salesChannelContext $event->getSalesChannelContext();
  33.         $customer $salesChannelContext->getCustomer() ?? null;
  34.         if(!$customer){
  35.             return;
  36.         }
  37.         $mainRequest $this->requestStack->getMainRequest();
  38.         if ($mainRequest->hasSession() === false) {
  39.             return;
  40.         }
  41.         $session $mainRequest->getSession();
  42.         if (!method_exists($session'getFlashBag')) {
  43.             return;
  44.         }
  45.         /** @var MasterdataEntity $masterData */
  46.         $masterData $this->masterdataService->getMasterdatasForCustomer($customer);
  47.         if(is_array($masterData) && empty($masterData)){
  48.             $session->getFlashBag()->add('danger'$this->translator->trans('masterdata.missinginformation.flashbag'));
  49.             return;
  50.         }
  51.         $masterDatas $masterData->getElements();
  52.         //Wenn die Adresse unvollständig ist, wird ein Flashbag ausgegeben
  53.         foreach($masterDatas as $masterData){
  54.             if(!$masterData->getName() || !$masterData->getStreet() || !$masterData->getZip() || !$masterData->getCity()){
  55.                 $session->getFlashBag()->add('danger'$this->translator->trans('masterdata.missinginformation.flashbag'));
  56.                 return;
  57.             }
  58.         }
  59.     }
  60. }