function queryPOST() {
const count = {};
arrkor.forEach(element => {
count[element] = (count[element] || 0) + 1;
});
console.log(count);
// выдает допустим { '2':1 '5':4 } ключ id товара, второе значение кол-во.
let keys = Object.keys(count);
let isError = false;
// проверили весь ли товар имеется на складе для покупки. 1 цикл
keys.forEach((key, index) => {
connect.query("SELECT * FROM tovar WHERE idt=?", [key], (err, row, fields) => {
let ostatok = row[0].count-count[key];
console.log(index+' остаток: '+ostatok);
if(ostatok<0){
response.send("Недостаточное кол-во товара. <a href='/'>Назад</a>");
isError = true;
}
});
});
if (isError) return;
// отправляем весь купленный товар в бд и завершаем удачную покупку. 2 цикл
for (let key in count) {
connect.query("SELECT * FROM tovar WHERE idt=?", [key], (err, row, fields) => {
let count2 = count[key];
let ostatok = row[0].count-count[key];
let nam = row[0].namet;
let cen = row[0].cenat;
let tovarimg = row[0].fotot;
let arrkor2 = tovarimg.split(',');
// Транзакция
connect.query("BEGIN Transaction");
connect.query("UPDATE tovar SET count=? WHERE idt=?", [ostatok, key]);
connect.query("INSERT INTO money (idm,namem,avatarm,adressm,telm,tidm,timgm,tnamem,tcenam,tcountm,ostatok,datanow,timem) VALUES (?,?,?,?,?,?,?,?,?,?,?,NOW(),?)", [polzid, nameuser, nameavatar, adress, tel, key, arrkor2[0], nam, cen, count2, ostatok, timem]);
connect.query("COMMIT");
response.send("Вы успешно совершили покупку. С вами свяжутся в ближайшее время. <a href='/'>Назад</a>");
});
}
}
queryPOST();