db = $db; } /** * @param int $limit * * @return array */ public function getLines(int $limit): array { $sqlOnlyA = 'SELECT d.id, d.fileName, d.type, d.content FROM `datanorm_intermediate` AS `d` WHERE d.type = \'A\' AND d.errorFlag = 0 AND d.doneFlag = 0 AND d.ready = 1 ORDER BY d.id DESC LIMIT ' . $limit; $sqlNotV = 'SELECT d.id, d.fileName, d.type, d.content FROM `datanorm_intermediate` AS `d` WHERE d.type != \'V\' AND d.errorFlag = 0 AND d.doneFlag = 0 AND d.ready = 1 ORDER BY d.id DESC LIMIT ' . $limit; // Articles (type A) MUST be imported before anything else; // 'ORDER BY type' makes the query slower than 2 single querys $rows = $this->db->fetchAll($sqlOnlyA); if (empty($rows)) { $rows = $this->db->fetchAll($sqlNotV); } return $rows; } /** * @param int $limit * * @return array */ public function getLinesToEnrich(int $limit): array { $sql = 'SELECT d.id, d.fileName, d.type, d.content FROM `datanorm_intermediate` AS `d` WHERE d.enrich = 1 AND d.doneFlag = 0 ORDER BY d.id DESC LIMIT ' . $limit; return $this->db->fetchAll($sql); } /** * @param string $fileName * * @return array */ public function getVType(string $fileName): array { $select = $this->db->select() ->cols(['id', 'fileName', 'type', 'content', 'supplier_address_id', 'user_address_id']) ->from('datanorm_intermediate') ->where('fileName = ?', $fileName) ->where('type = ?', 'V') ->limit(1); return $this->db->fetchRow( $select->getStatement(), $select->getBindValues() ); } /** * @param string $articleNumber * * @return array */ public function findArticleLineByNumber(string $articleNumber): array { $sql = 'SELECT di.content FROM `datanorm_intermediate` AS `di` WHERE di.type = \'A\' AND di.nummer = :articleNumber ORDER BY di.id DESC LIMIT 1'; $values = [ 'articleNumber' => $articleNumber, ]; return $this->db->fetchRow($sql, $values); } /** * @param string $longTextBlockNumber * * @return array */ public function findTTypeContentByBlocknumber(string $longTextBlockNumber): array { $sql = 'SELECT di.content FROM `datanorm_intermediate` AS `di` WHERE di.type = \'T\' AND di.nummer = :longTextBlockNumber AND di.doneFlag = 0 ORDER BY di.id'; $values = [ 'longTextBlockNumber' => $longTextBlockNumber, ]; return $this->db->fetchAll($sql, $values); } /** * @param string $articleNumber * * @return array */ public function findDTypeContentByArticleNumer(string $articleNumber): array { $sql = 'SELECT di.content FROM `datanorm_intermediate` AS `di` WHERE di.type = \'D\' AND di.nummer = :articleNumber AND di.doneFlag = 0 ORDER BY di.id'; $values = [ 'articleNumber' => $articleNumber, ]; return $this->db->fetchAll($sql, $values); } /** * @param int $vId * * @return string */ public function findSupplierNumberByVid(int $vId) { $sql = 'SELECT a.lieferantennummer FROM `adresse` AS `a` LEFT JOIN `datanorm_intermediate` AS `di` ON di.supplier_address_id = a.id WHERE di.id = :v_id'; $values = [ 'v_id' => $vId, ]; $result = $this->db->fetchRow($sql, $values); if (!empty($result)) { return (string)$result['lieferantennummer']; } return ''; } }