| @@ -28,19 +28,73 @@ class IsotopeDatabaseHandler | |||
| } | |||
| public function updateProducts(array $products) | |||
| public function processProducts(array $products) | |||
| { | |||
| $this->dbHandle->beginTransaction(); | |||
| $sql = "SELECT * FROM `tl_iso_product`"; | |||
| $stmt = $this->dbHandle->query($sql); | |||
| $dbProducts = $stmt->fetchAll(PDO::FETCH_ASSOC); | |||
| $sql = "SELECT * FROM `tl_iso_product_price`"; | |||
| $stmt = $this->dbHandle->query($sql); | |||
| $dbProductPrices = $stmt->fetchAll(PDO::FETCH_ASSOC); | |||
| $dbProductsBySku = []; | |||
| foreach ($dbProducts as $prod) { | |||
| $dbProductsBySku[$prod['sku']] = $prod; | |||
| } | |||
| $dbProductsPricesByPid = []; | |||
| foreach ($dbProductPrices as $price) { | |||
| $dbProductsPricesByPid[$price['pid']] = $price; | |||
| } | |||
| /** @var Product $product */ | |||
| foreach ($products as $product) { | |||
| $productId = $this->updateProduct($product); | |||
| $productPriceId = $this->updatePrice($product, $productId); | |||
| $this->updatePriceTier($product, $productPriceId); | |||
| if (array_key_exists($product->getCode(), $dbProductsBySku)) { | |||
| $dbProduct = $dbProductsBySku[$product->getCode()]; | |||
| $dbPrice = $dbProductsPricesByPid[$dbProduct['id']]; | |||
| $this->updateProduct($product, $dbProduct['id']); | |||
| $this->updatePriceTier($product, $dbPrice['id']); | |||
| } else { | |||
| $productId = $this->createProduct($product); | |||
| $productPriceId = $this->createPrice($product, $productId); | |||
| $this->createPriceTier($product, $productPriceId); | |||
| } | |||
| } | |||
| $this->dbHandle->commit(); | |||
| } | |||
| private function updateProduct(Product $product, $productDbId) | |||
| { | |||
| $shippingWeight = $product->getGrossWeight() !== '' ? | |||
| ($product->getNetWeight() !== '' ? $product->getNetWeight() : '') : ''; | |||
| $sql = | |||
| "UPDATE `tl_iso_product` SET | |||
| tstamp = ".time().", | |||
| name = '".$product->getDescription()."', | |||
| description = '".$product->getExtraDescription()."', | |||
| shipping_weight = '$shippingWeight' | |||
| WHERE `id` = ".$productDbId; | |||
| $this->dbHandle->query($sql); | |||
| } | |||
| private function updatePriceTier(Product $product, $priceDbId) | |||
| { | |||
| $price = $product->getStandardSalesPrice() * (1 + Product::VAT); | |||
| $sql = | |||
| "UPDATE `tl_iso_product_pricetier` SET | |||
| tstamp = ".time().", | |||
| price = $price | |||
| WHERE `pid` = ".$priceDbId; | |||
| $this->dbHandle->query($sql); | |||
| } | |||
| private function updateProduct(Product $product) | |||
| private function createProduct(Product $product) | |||
| { | |||
| $alias = 'exact-product-'.$product->getCode(); | |||
| $shippingWeight = $product->getGrossWeight() !== '' ? | |||
| @@ -101,7 +155,7 @@ class IsotopeDatabaseHandler | |||
| return $this->dbHandle->lastInsertId(); | |||
| } | |||
| private function updatePrice(Product $product, $productDbId) | |||
| private function createPrice(Product $product, $productDbId) | |||
| { | |||
| $sql = | |||
| "INSERT INTO `tl_iso_product_price` ( | |||
| @@ -125,7 +179,7 @@ class IsotopeDatabaseHandler | |||
| return $this->dbHandle->lastInsertId(); | |||
| } | |||
| private function updatePriceTier(Product $product, $productPriceDbId) | |||
| private function createPriceTier(Product $product, $productPriceDbId) | |||
| { | |||
| $price = $product->getStandardSalesPrice() * (1 + Product::VAT); | |||
| $sql = | |||
| @@ -143,5 +197,4 @@ class IsotopeDatabaseHandler | |||
| $this->dbHandle->query($sql); | |||
| return $this->dbHandle->lastInsertId(); | |||
| } | |||
| } | |||
| @@ -7,6 +7,6 @@ $databaseHandler = new IsotopeDatabaseHandler(); | |||
| //echo $apiConnector->getAccessToken() . "\n"; | |||
| $products = $apiConnector->getProducts(); | |||
| $databaseHandler->updateProducts($products); | |||
| $databaseHandler->processProducts($products); | |||
| $b = 0; | |||
| @@ -1 +1 @@ | |||
| {"access_token":"stampDE001.gAAAAHwOSGEkvQm9cR0GLsLKi-DF5HztPTxwFs1cElb0YqYwsA4Du2xEN2_QDZQaRP2S7JqojAxH7Pgh9bGX8aMk_w2Mc6E8Za3DfOCs5_IU89TUfIZfo-OlriYaWguDBjIhWDV7uyb0fyMk83Vplk4hffbmyTdvoTA1GbmvO9x-wEWYVAIAAIAAAAAMQCUSoZTK5-qcCHPI6G15WhlRHy2qHRJKJIJ3ugg6F95dz8Wq4oLsgD4Ej7n_9zloDUbYzABmiTMs6vu-wa4R3DjXmDtvZ5tFauTNTvlSVdbo-rT5rbHUo_LcdGTdE18njXZDBpK7K58cQXVq4zGxViUoqzrEu8aiqDhfwI93_pAXr1ABdwTj6sFxzeqRTAwIo2WVBG7uwzvYLQCrCUqpzxfxUgwH0FBbjEzcglBx56hNshomL4SNqbqqGIKaK1lNGOKz0jkxnuRdY0-nlBPsi0FN6goQDAE3wfKUFzj8DU0nyQAZhdedAtk4q3AT1mPnM9wuOxIwp3EXDeuYkiCIQNWSvU7WJJaWMqfRPrab86diQ5ffBxWDVc0HnpHgQVWr0peKvzLXS4lx5_pTgwLaJUurvlRbG0LI88x-qcMmGgbj2a54FaF93RrNOtHaheiGZh_CBDwqbT54vrFaxxwp-yNmYLVk2-2c70RUwobUInw9E_eR2RNPU9oHGQTMTQR9at_3jZ5dR68UyrY6BMCGJrqrTvSpXkmJNKhkjP9WHlWtz-dC-gt_m2cYaWifow76NAKHONyRk3-i6Qu3vKDc8vXyyi-RLeX6R0nLYV07p7yHsgSo2E8em5C6KdkHIQjJIanYyHUVf7noHJMuKIrrvaHBfdTuiC1ZbemwzPCsb7sdOftAb5vW3oxSEMmckuCVEROmeTyoZCDAV5oyecNAah73Sx7WLx87npWFhC0F71myL11vkWf5MSt8lQ-o-kZCt0Wws7h9KStVrb3mux9v","token_type":"bearer","expires_in":"600","refresh_token":"stampDE001.vhK0!IAAAANf_ePo7TNLoW4eBzZwdyynZfR7KhO8joJp6EgWw0pF58QEAAAFBqPStZfQ04DNGVJ23edCAkbZsdhwNjz3GfWOQoMaGhf3uoG8iydpqma1dDKY3MmFI5CNNxIKvpiN0jnvHqgi0g6O5QijAmgtB3_sVmzs4L0ODxGt3Befp2rJKu2MMBDySEJ_00XVZzBIKmZqVA6XUflZ7mfbotp22vTRbthYOMZlyz0OIT1leJKHfU8XYgB5Zzp8gPHxsSca93Kh3_3CQRp0ZoGR5YKSh1C2zw8QyVCBU_092gLonzTGHKlaIUd6nVT4oIhzXC9i9Dh7wL-9PSfk7m9OqJ7wX0h-p8wkO4bqjkSJofeglSrAvS3G1U8yo0QpxmJQW1FHsm-7q1s6w4O03LV9LsSZX93Wjm8mMq789tlZFZh7-MqO5_zQcwmgizMVDMbBsxPUMU1ITOrTYBAalNf9kyLvrGE-M4jhK_qQbGQ3FATy25U3QjoEQC9K_PWNyqY2XrzPDHSAoprI6hZxY9lYY71tDg3L10KB6BFXDM6bDj_oWa0BAI-TfO_cKRPhXxt9bAquWxhLYHNFdV-d0Il7FeRgI_Dmp7OsKYuFw6rrd6C8Vuz1AxuTaNT1G3V-ugUn5L-VV12JiLgMTTrBLK6OGh5fooDE3Li8tM7WiA5-K9HgP3Jsesdrl2O7ClBUFRrrhtiQINNgkLN1f","expiry_time":1657581261} | |||
| {"access_token":"stampDE001.gAAAAADL6aOtBYXnf9oX8oo7QyrDQln7zJtt7sEaJn2dbvaous1UbSvppR1Ya3CqVAanUy1qRx9lkr6U7tCTjX318c4kxnm67dmQmPukEAWpbUjetTe4avA8UMx-J5ykAkUN1pNTB1R9y2GxDt4jCCL1bUZkCDq0HNKnjXkXhtwVBBKWVAIAAIAAAACReWmKSqdcD9GTilQlefKkIOXIV7IWN27Wv2H73pY06G6khyNvxDbfoWCF_ZKeaR6ncZJshOuZ6JzsMdBle7CuX3OE98277itx8n36aVyoxnbE40-dWv9XnFfteOHQfKsAnasF8q746fdxGhJdvxfZmv_99ncUwpuR-7UqePwshwsM0wBvPMI0gaEROyEHv1RwhrtCINJi92UlNNv5pJfD5MQIflZ_3xm1mxF_d-vXNMHASos3YciXA1BzCWTO5ouTRjxTz7PDXhQSrOHOudrPWuCxUa_vQ8i9RbtVxd8DUPRU7fheRGsfaTKwDo76IHYDx0ZP8_YhTaMYlEXKTJM-7qPmNiWZ6_M2J0BsytQtdyXcUP8H6W_S0e0yQ6Ds6Yt8XEfBUPFkyRXKcaL0Jix-YlAA2yRbqyM4g_ndN5R9oiJtrKUxbKEf8WXmmnAWL7yz4UTkgXP-zi7o_z-YvZcrCUHpcESF7chhEXh6C1OPb1XkfeqozFX-JSwO_FwcOsRktXxqT5OCnNeZ7tnaw7zGN8ETRnMCLAOKOueX6lBgOOrGszAJYSkegpl5ZLAQBPgGi3JDASo86xF-yc1zDRKcgIONnAFSatASdvdZen11JzedrCIPaUnXVIKLHOQSTIzqVKNp23yVMEbQfEFj4tFkHsLaiKVab6fMOJdQ5qNHNnoVAzKRhcvhyz3tP__g6BTgUm3C3awOHzu_1LFsZuApavWLf_jZRq6na5jWitCUgCy6Ib4vrBC6KaHqdHi1xb3NXfq3FGw_ZO1phMm2TSK7","token_type":"bearer","expires_in":"600","refresh_token":"stampDE001.vhK0!IAAAALosHRpQdPUuLdhX-jaECbgokkK2deGK7TFtE2UnTaF28QEAAAFEZACQo3HB6AUdD06dCUPbm6lVP-4OtC0-ypV5PXBpfcssApvgMeC5P3JVyqB88YJmy1mvOhlewxPBW5oimVSgoXwJRGTMr9CxgSQTRbfusoi4ZMxEE7pDdfx0W1YffbCUluwuq8-qrQtlALer-5nnUU8B699O_B9qMGAbyO94wapxDKIAX9ArcMQFBiSSflFJtMpGQvrdOI-UCPw-TQ7mKfFSKN6XpG9v8QIzgcxOd8oSt4cGlWVUD7bRMmCFUYkgv2OBMxdlvvJ6ETCkRqQ2B3ydY2XjLm_8_S7FOi7f6ZCck0d9mIY7sQoCAmM8G19fgWX4s02eLOSJ4pY7tLGwfPU0l-d1NZiCedhcDjUVugl3bF42F_LJuPTr2HEbU7Zqgfjh5LvlQrFxBpX9-fYCxGjQPU4pDg39s1BUlUKWADQuR_xZe7q4GyQHV9414B9qUWyf9sC5dYxYcWGEszm6TZyofybaFEK5N2tgGc8h3BbVayX4exUuY_B-bPBiv1uzfv_uDc0UKQ0VX__yyhvER5HQTSg8kGndXKJ3ReOvroXzzJOjZ1AOM5OnZCZZ9lyWGDZuyPJyoSb-W1DfVmiwUmclCxD-OCN7t_W1U1w3ZX4YiS7nANi7KpmFGo0ptcX7GwmyhCPk7jg8JUEyWEAp","expiry_time":1657629511} | |||