/**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /**@var ReleaseDateCondition $criteriaPart */
     $date = new \DateTime();
     $intervalSpec = 'P' . $criteriaPart->getDays() . 'D';
     $interval = new \DateInterval($intervalSpec);
     $dateNow = new \DateTime();
     switch ($criteriaPart->getDirection()) {
         case ReleaseDateCondition::DIRECTION_FUTURE:
             $date->add($interval);
             $range = ['lte' => $date->format('Y-m-d'), 'gt' => $dateNow->format('Y-m-d')];
             break;
         case ReleaseDateCondition::DIRECTION_PAST:
             $date->sub($interval);
             $range = ['gte' => $date->format('Y-m-d'), 'lte' => $dateNow->format('Y-m-d')];
             break;
         default:
             return;
     }
     $filter = new RangeFilter('formattedReleaseDate', $range);
     if ($criteria->hasBaseCondition($criteriaPart->getName())) {
         $search->addFilter($filter);
     } else {
         $search->addPostFilter($filter);
     }
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /** @var PriceSorting $criteriaPart */
     $field = $this->fieldMapping->getPriceField($context);
     $sort = new FieldSort($field, strtolower($criteriaPart->getDirection()));
     $search->addSort($sort);
 }
 /**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /** @var ProductNameSorting $criteriaPart */
     $search->addSort(new FieldSort('name.raw', strtolower($criteriaPart->getDirection())));
 }
 /**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /** @var SearchRankingSorting $criteriaPart */
     $search->addSort(new FieldSort('_score', strtolower($criteriaPart->getDirection())));
 }
 /**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /** @var PopularitySorting $criteriaPart */
     $search->addSort(new FieldSort('sales', strtolower($criteriaPart->getDirection())));
 }
 /**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /** @var ProductAttributeSorting $criteriaPart */
     $field = 'attributes.core.' . $criteriaPart->getField();
     $search->addSort(new FieldSort($field, strtolower($criteriaPart->getDirection())));
 }
 /**
  * {@inheritdoc}
  */
 public function handle(CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context)
 {
     /** @var ReleaseDateSorting $criteriaPart */
     $search->addSort(new FieldSort('formattedReleaseDate', strtolower($criteriaPart->getDirection())));
 }