custom/plugins/ProcWegReg/src/Page/CustomRegisterProcessPageLoader.php line 42

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Proc\ProcWegReg\Page;
  3. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  4. use Shopware\Storefront\Page\GenericPageLoaderInterface;
  5. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  8. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  9. use Shopware\Core\System\Salutation\SalesChannel\AbstractSalutationRoute;
  10. use Shopware\Core\System\Country\SalesChannel\AbstractCountryRoute;
  11. use Shopware\Core\System\Country\CountryCollection;
  12. use Shopware\Core\System\Salutation\SalutationCollection;
  13. use Shopware\Core\System\Salutation\SalutationEntity;
  14. class CustomRegisterProcessPageLoader
  15. {
  16.     private GenericPageLoaderInterface $genericPageLoader;
  17.     private EventDispatcherInterface $eventDispatcher;
  18.     private AbstractSalutationRoute $salutationRoute;
  19.     private AbstractCountryRoute $countryRoute;
  20.     public function __construct(
  21.         GenericPageLoaderInterface $genericPageLoader,
  22.         EventDispatcherInterface $eventDispatcher,
  23.         AbstractSalutationRoute $salutationRoute,
  24.         AbstractCountryRoute $countryRoute)
  25.     {
  26.         $this->genericPageLoader $genericPageLoader;
  27.         $this->eventDispatcher $eventDispatcher;
  28.         $this->salutationRoute $salutationRoute;
  29.         $this->countryRoute $countryRoute;
  30.     }
  31.     public function load(Request $requestSalesChannelContext $context): CustomRegisterProcessPage
  32.     {
  33.         $page $this->genericPageLoader->load($request$context);
  34.         $page CustomRegisterProcessPage::createFrom($page);
  35.         $page->setCountries($this->getCountries($context));
  36.         $page->setSalutations($this->getSalutations($context));
  37.         $this->eventDispatcher->dispatch(
  38.             new CustomRegisterProcessPageLoadedEvent($page$context$request)
  39.         );
  40.         return $page;
  41.     }
  42.     private function getSalutations(SalesChannelContext $salesChannelContext): SalutationCollection
  43.     {
  44.         $salutations $this->salutationRoute->load(new Request(), $salesChannelContext, new Criteria())->getSalutations();
  45.         $salutations->sort(function (SalutationEntity $aSalutationEntity $b) {
  46.             return $b->getSalutationKey() <=> $a->getSalutationKey();
  47.         });
  48.         return $salutations;
  49.     }
  50.     private function getCountries(SalesChannelContext $salesChannelContext): CountryCollection
  51.     {
  52.         $criteria = (new Criteria())
  53.             ->addFilter(new EqualsFilter('active'true))
  54.             ->addAssociation('states');
  55.         $countries $this->countryRoute->load(new Request(), $criteria$salesChannelContext)->getCountries();
  56.         $countries->sortCountryAndStates();
  57.         return $countries;
  58.     }
  59. }