vendor/store.shopware.com/viob2blogin/src/Storefront/Subscriber/AddressSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace VioB2BLogin\Storefront\Subscriber;
  4. use Exception;
  5. use Shopware\Core\Checkout\Customer\Aggregate\CustomerAddress\CustomerAddressEntity;
  6. use Shopware\Storefront\Page\Address\Listing\AddressListingCriteriaEvent;
  7. use Shopware\Storefront\Page\Address\Listing\AddressListingPageLoadedEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use VioB2BLogin\Core\Services\EmployeeService;
  10. use VioB2BLogin\Entity\Employee\EmployeeEntity;
  11. use VioB2BLogin\Entity\EmployeeAddress\EmployeeAddressEntity;
  12. class AddressSubscriber implements EventSubscriberInterface
  13. {
  14.     private EmployeeService $employeeService;
  15.     public function __construct(EmployeeService $employeeService)
  16.     {
  17.         $this->employeeService $employeeService;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             AddressListingCriteriaEvent::class => 'onAddressCriteria',
  23.             AddressListingPageLoadedEvent::class => 'onPageLoaded'
  24.         ];
  25.     }
  26.     public function onAddressCriteria(AddressListingCriteriaEvent $event): void
  27.     {
  28.         try {
  29.             $employee $this->employeeService->getEmployeeByContext($event->getSalesChannelContext());
  30.             if ($employee instanceof EmployeeEntity && $employee->getAddresses() && $employee->getAddresses()->count() > 0) {
  31.                 $ids $employee->getAddresses()->getIds();
  32.                 $event->getCriteria()->setIds($ids);
  33.             }
  34.         } catch (Exception $ex) {
  35.         }
  36.     }
  37.     public function onPageLoaded(AddressListingPageLoadedEvent $event): void
  38.     {
  39.         try {
  40.             $employee $this->employeeService->getEmployeeByContext($event->getSalesChannelContext());
  41.             if ($employee instanceof EmployeeEntity && $employee->getAddresses() && $employee->getAddresses()->count() > 0) {
  42.                 foreach ($event->getPage()->getAddresses() as $address) {
  43.                     $employeeAddress $employee->getAddresses()->get($address->getId());
  44.                     if ($employeeAddress instanceof CustomerAddressEntity) {
  45.                         $relation $employeeAddress->getExtensionOfType('relationData'EmployeeAddressEntity::class);
  46.                         if ($relation instanceof EmployeeAddressEntity) {
  47.                             $address->addExtension('relationData'$relation);
  48.                         }
  49.                     }
  50.                 }
  51.             }
  52.         } catch (Exception $ex) {
  53.         }
  54.     }
  55. }