vendor/crehler/shopping-list/Storefront/Page/ShoppingList/ShoppingListPageLoader.php line 41

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright 2020 Crehler Sp. z o. o. <https://crehler.com>
  4.  *
  5.  * @author    Jakub MedyƄski <jme@crehler.com>
  6.  * @support   Crehler <support@crehler.com>
  7.  * @created   13 maj 2020
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Crehler\ShoppingList\Storefront\Page\ShoppingList;
  13. use Crehler\ShoppingList\CrehlerShoppingList;
  14. use Shopware\Core\Checkout\Customer\CustomerEntity;
  15. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  16. use Shopware\Storefront\Page\GenericPageLoader;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. class ShoppingListPageLoader
  20. {
  21.     private GenericPageLoader $genericLoader;
  22.     private ShoppingListLoader $shoppingListLoader;
  23.     private TranslatorInterface $translator;
  24.     public function __construct(
  25.         GenericPageLoader $genericLoader,
  26.         ShoppingListLoader $shoppingListLoader,
  27.         TranslatorInterface $translator
  28.     ) {
  29.         $this->genericLoader $genericLoader;
  30.         $this->shoppingListLoader $shoppingListLoader;
  31.         $this->translator $translator;
  32.     }
  33.     public function load(Request $requestSalesChannelContext $salesChannelContext): ShoppingListingPage
  34.     {
  35.         $page $this->genericLoader->load($request$salesChannelContext);
  36.         $page ShoppingListingPage::createFrom($page);
  37.         $customer $salesChannelContext->getCustomer();
  38.         $customerId $customer instanceof CustomerEntity $customer->getId() : null;
  39.         $token $request->cookies->get(CrehlerShoppingList::SHOPPING_LIST_COOKIE_TOKEN_NAME);
  40.         $sort $request->get('o''date-desc');
  41.         $p $request->get('p'1);
  42.         $filter = [
  43.             'order' => $sort,
  44.             'page' => $p
  45.         ];
  46.         $result $this->shoppingListLoader->load($customerId$token$filter$salesChannelContext);
  47.         $result ShoppingListingResult::createFrom($result);
  48.         // sorting
  49.         $result->setAvailableSortings($this->getSoring());
  50.         $result->setSorting($sort);
  51.         //pagination
  52.         $result->setPage($p);
  53.         $result->setLimit(ShoppingListLoader::LIMIT);
  54.         $page->setShoppingListsSearchResult($result);
  55.         // TODO: Change metainformation
  56. //        dd($page->getMetaInformation());
  57.         return $page;
  58.     }
  59.     public function loadDetail(string $listIdRequest $requestSalesChannelContext $salesChannelContext): ?ShoppingListDetailPage
  60.     {
  61.         $page $this->genericLoader->load($request$salesChannelContext);
  62.         $page ShoppingListDetailPage::createFrom($page);
  63.         $shoppingList $this->shoppingListLoader->loadDetail($listId$salesChannelContext);
  64.         if (null === $shoppingList) {
  65.             return null;
  66.         }
  67.         $page->setShoppingList($shoppingList);
  68.         // TODO: Change metainformation
  69. //        dd($page->getMetaInformation());
  70.         return $page;
  71.     }
  72.     private function getSoring(): array
  73.     {
  74.         return [
  75.             [
  76.                 'key' => 'name-asc',
  77.                 'label' => $this->trans('shoppingList.sorting.a-z')
  78.             ],
  79.             [
  80.                 'key' => 'date-desc',
  81.                 'label' => $this->trans('shoppingList.sorting.date-desc')
  82.             ],
  83.             [
  84.                 'key' => 'date-asc',
  85.                 'label' => $this->trans('shoppingList.sorting.date-asc')
  86.             ],
  87.             [
  88.                 'key' => 'price-desc',
  89.                 'label' => $this->trans('shoppingList.sorting.price-desc')
  90.             ],
  91.             [
  92.                 'key' => 'price-asc',
  93.                 'label' => $this->trans('shoppingList.sorting.price-asc')
  94.             ],
  95.         ];
  96.     }
  97.     private function trans(string $snippet, array $parameters = []): string
  98.     {
  99.         return $this->translator
  100.             ->trans($snippet$parameters);
  101.     }
  102. }