6 declare(strict_types=1);
28 private $productStatus;
33 private $resourceConnection;
43 private $storeManager;
48 private $metadataPool;
64 $this->productStatus = $productStatus;
68 $this->metadataPool = $metadataPool;
78 $storeId = $this->storeManager->getStore()->getId();
79 $connection = $this->resourceConnection->getConnection();
80 $valueCondition =
'at_status.value';
81 $tableName = $this->resourceConnection->getTableName(
'catalog_product_entity_int');
90 'at_status.value_id > 0',
92 'at_status_default.value' 98 $this->getConditionByAliasAndStoreId((
int)
$storeId,
'at_status'),
99 [
'status' => $valueCondition]
109 private function getConditionByAliasAndStoreId(
int $storeId,
string $alias): string
111 $metadata = $this->metadataPool->getMetadata(ProductInterface::class);
112 $linkField = $metadata->getLinkField();
114 $connection = $this->resourceConnection->getConnection();
115 $statusVisibilityCondition =
$connection->prepareSqlCondition(
117 [
'in' => $this->productStatus->getVisibleStatusIds()]
122 $alias .
'.' . $linkField .
' = product.' . $linkField,
123 $statusVisibilityCondition,