src/Classes/DataMapper/Document/ProductListingDataMapper.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Classes\DataMapper\Document;
  3. use Factory\SupportBundle\Classes\DataMapper\Ecommerce\PriceDataMapper;
  4. use Factory\SupportBundle\Contract\DataMapper\AbstractDataMapper;
  5. use Pimcore\Model\WebsiteSetting;
  6. use Symfony\Component\HttpFoundation\Request;
  7. class ProductListingDataMapper extends AbstractDataMapper
  8. {
  9.     public function toArray($request)
  10.     {
  11.         $defaultImage WebsiteSetting::getByName('defaultGroupedProductImage') ?
  12.             WebsiteSetting::getByName('defaultGroupedProductImage')->getData() :
  13.             null;
  14.         return [
  15.             "id" => $this->getId(),
  16.             "key" => $this->getKey(),
  17.             "name" => $this->getName(),
  18.             "image" => $this->getMainImage() ?? $defaultImage,
  19.             "href" => $this->getHref($request),
  20.             'minPrice' => (new PriceDataMapper($this->getOSMinPrice()))->toArray($request),
  21.             "shortDescription" => $this->getShortDescription(),
  22.         ];
  23.     }
  24.     protected function getHref(Request $request)
  25.     {
  26.         $params = [];
  27.         $document $request->attributes->get('contentDocument');
  28.         if ($document) {
  29.             $params['navigate_from_document'] = $document->getId();
  30.         }
  31.         $category $this->getDocumentCategory($document);
  32.         if ($category) {
  33.             $params['navigated_from_object'] = $category->getId();
  34.         }
  35.         return $this->resource->getHref($params);
  36.     }
  37.     private function getDocumentCategory($document)
  38.     {
  39.         $filter $document->getProperty('products_filter');
  40.         if (!$filter) {
  41.             return null;
  42.         }
  43.         return $filter->getParent();
  44.     }
  45. }