/**
  * @param Collection $productCollection
  * @param bool $printQuery
  * @param bool $logQuery
  * @return array
  */
 public function beforeLoad(Collection $productCollection, $printQuery = false, $logQuery = false)
 {
     if (!$productCollection->hasFlag('catalog_rule_loaded')) {
         $connection = $this->resource->getConnection();
         $store = $this->storeManager->getStore();
         $productCollection->getSelect()->joinLeft(['catalog_rule' => $this->resource->getTableName('catalogrule_product_price')], implode(' AND ', ['catalog_rule.product_id = e.entity_id', $connection->quoteInto('catalog_rule.website_id = ?', $store->getWebsiteId()), $connection->quoteInto('catalog_rule.customer_group_id = ?', $this->customerSession->getCustomerGroupId()), $connection->quoteInto('catalog_rule.rule_date = ?', $this->dateTime->formatDate($this->localeDate->scopeDate($store->getId()), false))]), [CatalogRulePrice::PRICE_CODE => 'rule_price']);
         $productCollection->setFlag('catalog_rule_loaded', true);
     }
     return [$printQuery, $logQuery];
 }
Example #2
0
 /**
  * Returns Configurable Products Collection with added swatch attributes
  *
  * @param ConfigurableProduct $subject
  * @param Collection $result
  * @return Collection
  *
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function afterGetUsedProductCollection(ConfigurableProductType $subject, Collection $result)
 {
     $attributeCodes = ['image'];
     $entityType = $result->getEntity()->getType();
     foreach ($this->eavConfig->getEntityAttributeCodes($entityType) as $code) {
         $attribute = $this->eavConfig->getAttribute($entityType, $code);
         if ($this->swatchHelper->isVisualSwatch($attribute) || $this->swatchHelper->isTextSwatch($attribute)) {
             $attributeCodes[] = $code;
         }
     }
     $result->addAttributeToSelect($attributeCodes);
     return $result;
 }