Example #1
0
 public function loadPreviewAction()
 {
     $conditions = $this->Request()->getParam('conditions');
     $conditions = json_decode($conditions, true);
     $sorting = $this->Request()->getParam('sort');
     $criteria = new Criteria();
     /** @var RepositoryInterface $streamRepo */
     $streamRepo = $this->get('shopware_product_stream.repository');
     $sorting = $streamRepo->unserialize($sorting);
     foreach ($sorting as $sort) {
         $criteria->addSorting($sort);
     }
     $conditions = $streamRepo->unserialize($conditions);
     foreach ($conditions as $condition) {
         $criteria->addCondition($condition);
     }
     $criteria->offset($this->Request()->getParam('start', 0));
     $criteria->limit($this->Request()->getParam('limit', 20));
     $context = $this->createContext($this->Request()->getParam('shopId'), $this->Request()->getParam('currencyId'), $this->Request()->getParam('customerGroupKey'));
     $criteria->addBaseCondition(new CustomerGroupCondition([$context->getCurrentCustomerGroup()->getId()]));
     $category = $context->getShop()->getCategory()->getId();
     $criteria->addBaseCondition(new CategoryCondition([$category]));
     $result = Shopware()->Container()->get('shopware_search.product_search')->search($criteria, $context);
     $products = array_values($result->getProducts());
     $this->View()->assign(['success' => true, 'data' => $products, 'total' => $result->getTotalCount()]);
 }
Example #2
0
 /**
  * @param array $productStream
  * @param Criteria $criteria
  */
 private function assignConditions(array $productStream, Criteria $criteria)
 {
     $serializedConditions = json_decode($productStream['conditions'], true);
     $conditions = $this->unserialize($serializedConditions);
     /** @var ConditionInterface $conditions */
     foreach ($conditions as $condition) {
         $criteria->addBaseCondition($condition);
     }
 }
 /**
  * @param Criteria $criteria
  */
 private function addIsAvailableCondition(Criteria $criteria)
 {
     if (!$this->config->get('hideNoInstock')) {
         return;
     }
     $criteria->addBaseCondition(new IsAvailableCondition());
 }
Example #4
0
 /**
  * @param Criteria $criteria
  * @param Category $category
  * @param $conditions
  * @param ProductContext $context
  */
 protected function addCategoryBaseCondition(Criteria $criteria, Category $category, $conditions, ProductContext $context)
 {
     if ($category) {
         $criteria->addBaseCondition(new CategoryCondition(array($category->getId())));
     }
 }