resourceConnection = $resourceConnection; } /** * Delete multiple notification configurations * * @param SourceItemInterface[] $sourceItems * @return void * @SuppressWarnings(PHPMD.LongVariable) */ public function execute(array $sourceItems) { if (!empty($sourceItems)) { $connection = $this->resourceConnection->getConnection(); $tableName = $this->resourceConnection ->getTableName('inventory_low_stock_notification_configuration'); $whereSql = $this->buildWhereSqlPart($sourceItems); $connection->delete($tableName, $whereSql); } } /** * Build a SQL where from an array of source items * * @param SourceItemInterface[] $sourceItems * @return string */ private function buildWhereSqlPart(array $sourceItems): string { $connection = $this->resourceConnection->getConnection(); $condition = []; foreach ($sourceItems as $sourceItem) { $skuCondition = $connection->quoteInto( SourceItemConfigurationInterface::SKU . ' = ?', $sourceItem->getSku() ); $sourceCodeCondition = $connection->quoteInto( SourceItemConfigurationInterface::SOURCE_CODE . ' = ?', $sourceItem->getSourceCode() ); $condition[] = '(' . $skuCondition . ' AND ' . $sourceCodeCondition . ')'; } return implode(' OR ', $condition); } }