getCartItems($mergeIdCart) as $item) { $actualItem = sqlQueryBuilder()->select('id', '`date`') ->from('cart') ->where(Operator::equals($this->cart->getSelectParams() + ['id_product' => $item['id_product']])) ->andWhere(Operator::equalsNullable(['id_variation' => $item['id_variation'], 'note' => $item['note']])) ->execute()->fetch(); if (!$actualItem || (new \DateTime($actualItem['date'])) < (new \DateTime($item['date']))) { if ($actualItem) { sqlQueryBuilder()->delete('cart')->where(Operator::equals(['id' => $actualItem['id']]))->execute(); } unset($item['date']); $item['note'] = json_decode($item['note'], true) ?: ''; try { if ($this->cart->addItem($item)) { $mergedCount++; } // kdyz merguju produkty, ktery jsou nedostupny } catch (InvalidCartItemException) { continue; } } } $this->cart->invalidatePurchaseState(); return $mergedCount; } public function isUserCartEmpty(): bool { $item = sqlQueryBuilder() ->select('id') ->from('cart') ->where(Operator::equals($this->cart->getSelectParams())) ->execute()->fetchOne(); if ($item) { return false; } return true; } public function getCartItems($mergeIdCart) { return sqlQueryBuilder() ->select('id_product', 'id_variation', 'pieces', 'note', '`date`') ->from('cart') ->where(Operator::equals(['user_key' => $mergeIdCart])) ->execute(); } }