diff --git a/express-server/db-connect/db-connect.js b/express-server/db-connect/db-connect.js index 7f76fd56..be8b96ee 100644 --- a/express-server/db-connect/db-connect.js +++ b/express-server/db-connect/db-connect.js @@ -135,7 +135,7 @@ async function newShoppinglist(name, description, username, color) { //rename Shoppinglist -async function editShoppinglist(sl_id, newname, newdescription, newcolor) { +async function editShoppinglist(sl_id, newname, newdescription, newcolor, uid) { try { let shoppinglist = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE sl_id = $1;', [sl_id]); @@ -150,6 +150,8 @@ async function editShoppinglist(sl_id, newname, newdescription, newcolor) { if (shoppinglist.color != newcolor && newcolor != undefined) { await nonQuery('UPDATE "Shoppinglist" SET color = $1 WHERE sl_id = $2;', [newcolor, sl_id]); } + + return getShoppinglistsAdmin(uid); } catch (error) { console.error(error); } @@ -177,7 +179,7 @@ async function displayShoppinglist(sl_id) { let members = await query('SELECT row_to_json("User") as obj FROM "User" JOIN "Shoppinglist_member" USING (username) WHERE sl_id = $1', [sl_id]); let admin = await query('SELECT row_to_json("User") as obj FROM "User" JOIN "Shoppinglist_admin" USING (username) WHERE sl_id = $1', [sl_id]); - return items_in_groups(groups, items, sl_id, admin[0].username, admin[0].message_id, members, shoppinglist[0].name, shoppinglist[0].description, shoppinglist[0].invitelink); + return items_in_groups(groups, items, sl_id, admin, members, shoppinglist[0].name, shoppinglist[0].description, shoppinglist[0].invitelink, shoppinglist[0].color); } catch (error) { console.error(error); } @@ -246,6 +248,8 @@ async function editGroup(sl_id, group_id, name, color, hidden) { await nonQuery('UPDATE "Group" SET hidden = $1 WHERE group_id = $2 AND sl_id = $3;', [hidden, group_id, sl_id]); } + return displayShoppinglist(sl_id); + } catch (error) { console.error(error); } @@ -267,6 +271,8 @@ async function editItem(sl_id, group_id, item_id, name, count) { if (item.count != count && count != undefined) { await nonQuery('UPDATE "Item" SET count = $1 WHERE item_id = $2 AND group_id = $3 AND sl_id = $4', [count, item_id, group_id, sl_id]); } + + return displayShoppinglist(sl_id); } catch (error) { console.error(error); } @@ -286,7 +292,7 @@ async function deleteGroup(group_id, sl_id) { console.error(error); } - push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde gelöscht!", "Die Gruppe " + name + " wurde gelöscht!"); + // push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde gelöscht!", "Die Gruppe " + name + " wurde gelöscht!"); return displayShoppinglist(sl_id); } @@ -299,7 +305,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!"); + //push.sendMultiplePush(await getmessageids(sl_id), "Item wurde gelöscht!", "Das Item " + name + " wurde gelöscht!"); return displayShoppinglist(sl_id); } @@ -347,8 +353,8 @@ async function moveDoneItems(uid, sl_id, billcontent) { async function moveDoneItemMan(uid, sl_id, group_id, item_id) { try { - let name = await query('SELECT row_to_json("Item") as obj FROM "Item" WHERE item_id = $3 AND group_id = $2 AND sl_id = $1', [sl_id, group_id, item_id]); - console.log(name); + let item = await query('SELECT row_to_json("Item") as obj FROM "Item" WHERE item_id = $3 AND group_id = $2 AND sl_id = $1', [sl_id, group_id, item_id]); + var today = new Date(); var dd = today.getDate(); var mm = today.getMonth() + 1; @@ -365,9 +371,14 @@ async function moveDoneItemMan(uid, sl_id, group_id, item_id) { today = mm + '/' + dd + '/' + yyyy; await nonQuery('INSERT INTO "Done_Purchase" (purchased_item_id, username, name, date, count) VALUES($1,$2,$3,$4,$5);', - [generate_item_id(), uid, name, today, 1]); + [generate_item_id(), uid, item[0].name, today, item[0].count]); await nonQuery('DELETE FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item_id, group_id, sl_id]); + + return await { + shoppinglist: await displayShoppinglist(sl_id), + doneitems: await getDonePurchases(uid) + } } catch(error) { @@ -388,7 +399,23 @@ async function getDonePurchases(uid) { } } +async function getUserDB(uid) { + try { + let user = await query('SELECT row_to_json("User") AS obj FROM "User" WHERE username = $1;', [uid]); + return user; + } catch (error) { + console.error("Error", error); + } +} +async function deleteDonePurchase(pid, uid) { + try { + await nonQuery('DELETE FROM "Done_Purchase" WHERE purchased_item_id = $1 ', [pid]); + return getDonePurchases(uid); + } catch (error) { + console.error("Error", error); + } +} @@ -433,7 +460,7 @@ async function removeMember(uid, sl_id) { try { await nonQuery('DELETE FROM "Shoppinglist_member" WHERE username = $1 AND sl_id = $2', [uid, sl_id]); - return getShoppinglistsShared(sl_id); + return await displayShoppinglist(sl_id); } catch (error) { console.error(error); } @@ -480,18 +507,22 @@ function generate_item_id() { return output; } -function items_in_groups(groups, items, sl_id, admin_uid, admin_mid, members, name, description, invitelink) { +function items_in_groups(groups, items, sl_id, sl_admin, sl_members, name, description, invitelink, color) { let result = { sl_id: sl_id, name: name, description: description, invitelink: invitelink, + color: color, admin: { - uid: admin_uid, - mid: admin_mid + username: sl_admin[0].username, + email: sl_admin[0].email, + name: sl_admin[0].name, + picture: sl_admin[0].picture, + message_id: sl_admin[0].message_id }, - members: [], + members: sl_members, groups: [] }; @@ -507,14 +538,6 @@ function items_in_groups(groups, items, sl_id, admin_uid, admin_mid, members, na }); } - for (let item of members) { - - result.members.push({ - uid: item.username, - mid: item.message_id - }); - } - return result; } @@ -619,5 +642,7 @@ module.exports = { searchUsers, removeMember, moveDoneItemMan, - getUser + getUser, + getUserDB, + deleteDonePurchase } \ No newline at end of file diff --git a/express-server/routes/index.js b/express-server/routes/index.js index 59de7e1e..5ed77065 100644 --- a/express-server/routes/index.js +++ b/express-server/routes/index.js @@ -193,8 +193,6 @@ router.get("/shoppinglist_json/:sl_id", async (req, res) => { -postgres.displayShoppinglist("4tezJYMK"); - //DELETE Shoppinglist router.delete("/shoppinglist", async (req, res) => { @@ -272,10 +270,25 @@ router.get("/userinfo_json", (req, res) => { //Rename Shoppinglist router.put("/shoppinglist", async (req, res) => { try { - res.status(200).send(await postgres.editShoppinglist(req.body.sl_id, req.body.name, req.body.description, req.body.color)); + } catch (err) { res.status(400).send(await err); } + + var token = req.body.idtoken; + var uid; + firebaseAdmin.auth().verifyIdToken(token) + .then(async function (decodedToken) { + uid = decodedToken.uid; + + try { + res.status(200).send(await postgres.editShoppinglist(req.body.sl_id, req.body.name, req.body.description, req.body.color, uid)); + } catch (err) { + res.status(400).send(await err); + } + }).catch(function (error) { + console.log(error) + }); }); //Rename Group @@ -332,9 +345,9 @@ router.post("/maninvite", async (req, res) => { }); -router.delete("/member", (req, res) => { +router.delete("/member", async (req, res) => { try { - postgres.removeMember(req.body.uid, req.body.sl_id) + res.status(200).send(await postgres.removeMember(req.body.uid, req.body.sl_id)); } catch (err) { return err; } @@ -489,6 +502,46 @@ router.get("/dash2", (req, res) => { res.status(200).render("dash2"); }); +router.get("/dbuser", async function (req, res, next) { + var token = req.query.idtoken; + console.log("/myshoppinglists idtoken: ", token) + firebaseAdmin.auth().verifyIdToken(token) + .then(async function (decodedToken) { + uid = decodedToken.uid; + console.log("uid", uid) + try { + //Get user id: req.session.passport.user.profile.id + res.status(200).send(await postgres.getUserDB(uid)); + } catch (err) { + res.status(400).send(await err); + } + + }).catch(function (error) { + console.log(error) + }); + + +}); + +router.delete("/donepurchase", async (req, res) => { + var token = req.body.idtoken; + console.log("/myshoppinglists idtoken: ", token) + firebaseAdmin.auth().verifyIdToken(token) + .then(async function (decodedToken) { + uid = decodedToken.uid; + console.log("uid", uid) + try { + //Get user id: req.session.passport.user.profile.id + res.status(200).send(await postgres.deleteDonePurchase(req.body.pid, uid)); + } catch (err) { + res.status(400).send(await err); + } + + }).catch(function (error) { + console.log(error) + }); +}); + module.exports = router; \ No newline at end of file