diff --git a/express-server/db-connect/db-connect.js b/express-server/db-connect/db-connect.js index 4b0b1521..cd10b6a1 100644 --- a/express-server/db-connect/db-connect.js +++ b/express-server/db-connect/db-connect.js @@ -1,3 +1,4 @@ +var push = require('../push/push'); const { query, nonQuery @@ -11,8 +12,8 @@ const stringSimilarity = require('string-similarity'); async function updateUser(uid, mid, name, picture, email) { try { - await nonQuery('INSERT INTO "User" (username, message_id, name, picture, email) VALUES ($1, $2, $3, $4, $5);', [uid, mid, name, picture, email]); - + await nonQuery('INSERT INTO "User" (username, name, picture, email, message_id) VALUES ($1, $2, $3, $4, $5);', [uid, name, picture, email, mid]); + } catch (error) { console.error(error); } @@ -20,8 +21,8 @@ async function updateUser(uid, mid, name, picture, email) { async function getmessageids(sl_id) { try { - let members = query('SELECT * FROM "Shoppinglist_member" WHERE sl_id = $1;', [sl_id]); - let admin = query('SELECT * FROM "Shoppinglist_admin" WHERE sl_id = $1;', [sl_id]); + let members = await query('SELECT row_to_json("User") AS obj FROM "Shoppinglist_member" JOIN "User" USING (username) WHERE sl_id = $1;', [sl_id]); + let admin = await query('SELECT row_to_json("User") AS obj FROM "Shoppinglist_admin" JOIN "User" USING (username) WHERE sl_id = $1;', [sl_id]); return users_to_array(admin, members); } catch (error) { @@ -193,6 +194,7 @@ async function addGroup(sl_id, name, color, hidden) { } catch (error) { console.error(error); } + push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde hinzugefügt!", "Die Gruppe " + name + " wurde hinzugefügt!"); } //add item into group @@ -204,6 +206,7 @@ async function addItem(group_id, sl_id, name, count) { } catch (error) { console.error(error); } + push.sendMultiplePush(await getmessageids(sl_id), "Item wurde hinzugefügt!", "Das Item " + name + " wurde hinzugefügt!"); } //Edit Group @@ -226,6 +229,8 @@ async function editGroup(sl_id, group_id, name, color, hidden) { } catch (error) { console.error(error); } + + push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde bearbeitet!", "Die Gruppe " + name + " wurde bearbeitet!"); } //Edit Item @@ -245,6 +250,7 @@ async function editItem(sl_id, group_id, item_id, name, count) { } catch (error) { console.error(error); } + push.sendMultiplePush(await getmessageids(sl_id), "Item wurde bearbeitet!", "Das Item " + name + " wurde bearbeitet!"); } //Delete Group @@ -259,6 +265,8 @@ async function deleteGroup(group_id, sl_id) { } catch (error) { console.error(error); } + + push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde gelöscht!", "Die Gruppe " + name + " wurde gelöscht!"); } //Delete Item @@ -269,6 +277,7 @@ async function deleteItem(item_id, group_id, sl_id) { } catch (error) { console.error(error); } + push.sendMultiplePush(await getmessageids(sl_id), "Item wurde gelöscht!", "Das Item " + name + " wurde gelöscht!"); } //Move to Done Purchases (delete items from shoppinglist & move into done_purchases table) @@ -294,18 +303,22 @@ async function moveDoneItems(uid, sl_id, billcontent) { today = mm + '/' + dd + '/' + yyyy; + //Insert Into Done Purchases Table for (let item of removeableItems) { await nonQuery('INSERT INTO "Done_Purchase" (purchased_item_id, username, name, date, count) VALUES($1,$2,$3,$4,$5);', - [generate_item_id(), uid, item.name, today, 1]); + [generate_item_id(), uid, item.item.name, today, item.count]); } + //Update count From Item Table for (let item of removeableItems) { - await nonQuery('DELETE FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item.item_id, item.group_id, item.sl_id]); - console.log(item); - + await nonQuery('UPDATE "Item" SET count = count - $4 WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item.item.item_id, item.item.group_id, item.item.sl_id, item.count]); } + //Chech if item count = 0 and delete + + await nonQuery('DELETE FROM "Item" WHERE count = 0;') + return "done" } catch (error) { console.error(error); @@ -497,10 +510,10 @@ function generateInviteLink() { function users_to_array(admin, members) { let users = []; - users.push(admin.username); + users.push(admin[0].message_id); for (let item of members) { - users.push(item.username); + users.push(item.message_id); } return users; @@ -513,17 +526,14 @@ function compareData(listitems, doneitems) { let output = []; for (let item of listitems) { - if (doneitems.includes(item.name)) { + + if (probability(item.name, doneitems).best > 0.6) { + output.push({item: item, count: probability(item.name, doneitems).count}); + } else if (probability(item.name.toUpperCase(), doneitems.toUpperCase()).best > 0.6) { + output.push({item: item, count: probability(item.name, doneitems).count}); output.push(item); - } else if (doneitems.toUpperCase().includes(item.name.toUpperCase())) { - output.push(item); - } else if (doneitems.toLowerCase().includes(item.name.toLowerCase())) { - output.push(item); - } else if (probability(item.name, doneitems) > 0.6) { - output.push(item); - } else if (probability(item.name.toUpperCase(), doneitems.toUpperCase()) > 0.6) { - output.push(item); - } else if (probability(item.name.toLowerCase(), doneitems.toLowerCase()) > 0.6) { + } else if (probability(item.name.toLowerCase(), doneitems.toLowerCase()).best > 0.6) { + output.push({item: item, count: probability(item.name, doneitems).count}); output.push(item); } } @@ -532,19 +542,33 @@ function compareData(listitems, doneitems) { } function probability(cur_item, data) { - let best = 0; + let pos; + let count = 0; + let numbers = "123456789"; + for (let i = 0; i < data.length; i++) { let prob = stringSimilarity.compareTwoStrings(cur_item, data.slice(i, i + cur_item.length)); if (prob > best) { best = prob; + pos = i; } } - return best; + for(let i = pos; i >= 0; i--) { + if(numbers.includes(data.charAt(i)) == true) { + count = data.charAt(i); + break; + } + + } + + return { + best: best, count: count + }; } diff --git a/express-server/public/javascripts/ajax.js b/express-server/public/javascripts/ajax.js index 6fd53843..67ffd54c 100644 --- a/express-server/public/javascripts/ajax.js +++ b/express-server/public/javascripts/ajax.js @@ -346,7 +346,12 @@ function Detail() { `); for (let x = 0; x < el.content.length; x++) { const el2 = el.content[x] - $(`.${el.name}`).append(`