<?php
namespace EconsorAppStorefront\Storefront\registration;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\Routing\RequestContextResolverInterface;
use Shopware\Core\Framework\Struct\ArrayStruct;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Framework\Routing\Router;
use Shopware\Storefront\Page\GenericPageLoaderInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
class RegistrationAppPageLoader
{
private GenericPageLoaderInterface $genericPageLoader;
private EventDispatcherInterface $eventDispatcher;
private EntityRepository $salutationRepository;
private Router $router;
public function __construct(GenericPageLoaderInterface $genericPageLoader,
EventDispatcherInterface $eventDispatcher,
EntityRepository $salutationRepository,
Router $router)
{
$this->genericPageLoader = $genericPageLoader;
$this->eventDispatcher = $eventDispatcher;
$this->salutationRepository = $salutationRepository;
$this->router = $router;
}
public function load(Request $request, SalesChannelContext $context): RegistrationAppPage|RedirectResponse
{
$page = $this->genericPageLoader->load($request, $context);
$page = RegistrationAppPage::createFrom($page);
/*
if(!$context->getCustomer()) {
$url = $this->router->generate('frontend.account.login');
return new RedirectResponse($url);
}
*/
$customLoggedIn = new ArrayStruct();
$customLoggedIn->set('login', $context->getCustomer() != null);
$page->addExtension('customerLoggedIn', $customLoggedIn);
$salutations = $this->salutationRepository->search(new Criteria(), $context->getContext());
$page->addExtension('salutations', $salutations);
$this->eventDispatcher->dispatch(
new RegistrationAppPageLoadedEvent($page, $context, $request)
);
return $page;
}
}