<?php declare(strict_types=1);
namespace Crehler\FastNavigation\Controller;
use Shopware\Core\Content\Category\Exception\CategoryNotFoundException;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\Exception\InconsistentCriteriaIdsException;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\EntitySearchResult;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Sorting\FieldSorting;
use Shopware\Core\Framework\Routing\Annotation\RouteScope;
use Shopware\Core\Framework\Routing\Exception\MissingRequestParameterException;
use Shopware\Core\System\SalesChannel\Entity\SalesChannelRepositoryInterface;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Controller\StorefrontController;
use Shopware\Storefront\Page\Checkout\Offcanvas\OffcanvasCartPageLoader;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
/**
* @RouteScope(scopes={"storefront"})
*/
class FastNavigationController extends StorefrontController
{
/**
* @var OffcanvasCartPageLoader
*/
private $offcanvasCartPageLoader;
/**
* @var SalesChannelRepositoryInterface
*/
private $productRepository;
/**
* FastNavigationController constructor.
* @param OffcanvasCartPageLoader $offcanvasCartPageLoader
*/
public function __construct(OffcanvasCartPageLoader $offcanvasCartPageLoader, SalesChannelRepositoryInterface $productRepository)
{
$this->offcanvasCartPageLoader = $offcanvasCartPageLoader;
$this->productRepository = $productRepository;
}
/**
* @Route("/widgets/fastnavigation/basket-info", name="frontend.fastnavigation.basket_info", methods={"GET"}, defaults={"XmlHttpRequest"=true})
*
* @param Request $request
* @param SalesChannelContext $context
* @return JsonResponse
*/
public function basketInfo(Request $request, SalesChannelContext $context): Response
{
try {
$basketInfo = $this->offcanvasCartPageLoader->load($request, $context);
} catch (CategoryNotFoundException $e) {
} catch (InconsistentCriteriaIdsException $e) {
} catch (MissingRequestParameterException $e) {
}
$totalPrice = $basketInfo->getCart()->getPrice()->getTotalPrice();
$cartCount = $basketInfo->getCart()->getLineItems()->count();
return $this->renderStorefront(
'@FastNavigation/storefront/element/widget-fast-navigation-basket.html.twig',
[ 'totalPrice' => $totalPrice, 'cartCount' => $cartCount ]
);
}
}