Merge branch 'master' of https://github.com/LukasNowy/SmartShopper
This commit is contained in:
		@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					var push = require('../push/push');
 | 
				
			||||||
const {
 | 
					const {
 | 
				
			||||||
    query,
 | 
					    query,
 | 
				
			||||||
    nonQuery
 | 
					    nonQuery
 | 
				
			||||||
@@ -11,7 +12,7 @@ const stringSimilarity = require('string-similarity');
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
async function updateUser(uid, mid, name, picture, email) {
 | 
					async function updateUser(uid, mid, name, picture, email) {
 | 
				
			||||||
    try {
 | 
					    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) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
@@ -20,8 +21,8 @@ async function updateUser(uid, mid, name, picture, email) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
async function getmessageids(sl_id) {
 | 
					async function getmessageids(sl_id) {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        let members = query('SELECT * FROM "Shoppinglist_member" 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 = query('SELECT * FROM "Shoppinglist_admin" 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);
 | 
					        return users_to_array(admin, members);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
@@ -193,6 +194,7 @@ async function addGroup(sl_id, name, color, hidden) {
 | 
				
			|||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde hinzugefügt!", "Die Gruppe " + name + " wurde hinzugefügt!");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//add item into group
 | 
					//add item into group
 | 
				
			||||||
@@ -204,6 +206,7 @@ async function addItem(group_id, sl_id, name, count) {
 | 
				
			|||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    push.sendMultiplePush(await getmessageids(sl_id), "Item wurde hinzugefügt!", "Das Item " + name + " wurde hinzugefügt!");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Edit Group
 | 
					//Edit Group
 | 
				
			||||||
@@ -226,6 +229,8 @@ async function editGroup(sl_id, group_id, name, color, hidden) {
 | 
				
			|||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde bearbeitet!", "Die Gruppe " + name + " wurde bearbeitet!");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Edit Item
 | 
					//Edit Item
 | 
				
			||||||
@@ -245,6 +250,7 @@ async function editItem(sl_id, group_id, item_id, name, count) {
 | 
				
			|||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    push.sendMultiplePush(await getmessageids(sl_id), "Item wurde bearbeitet!", "Das Item " + name + " wurde bearbeitet!");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Delete Group
 | 
					//Delete Group
 | 
				
			||||||
@@ -259,6 +265,8 @@ async function deleteGroup(group_id, sl_id) {
 | 
				
			|||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    push.sendMultiplePush(await getmessageids(sl_id), "Gruppe wurde gelöscht!", "Die Gruppe " + name + " wurde gelöscht!");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//Delete Item
 | 
					//Delete Item
 | 
				
			||||||
@@ -269,6 +277,7 @@ async function deleteItem(item_id, group_id, sl_id) {
 | 
				
			|||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(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)
 | 
					//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;
 | 
					        today = mm + '/' + dd + '/' + yyyy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Insert Into Done Purchases Table
 | 
				
			||||||
        for (let item of removeableItems) {
 | 
					        for (let item of removeableItems) {
 | 
				
			||||||
            await nonQuery('INSERT INTO "Done_Purchase" (purchased_item_id, username, name, date, count) VALUES($1,$2,$3,$4,$5);',
 | 
					            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) {
 | 
					        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]);
 | 
					            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]);
 | 
				
			||||||
            console.log(item);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //Chech if item count = 0 and delete
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        await nonQuery('DELETE FROM "Item" WHERE count = 0;')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return "done"
 | 
					        return "done"
 | 
				
			||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
@@ -497,10 +510,10 @@ function generateInviteLink() {
 | 
				
			|||||||
function users_to_array(admin, members) {
 | 
					function users_to_array(admin, members) {
 | 
				
			||||||
    let users = [];
 | 
					    let users = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    users.push(admin.username);
 | 
					    users.push(admin[0].message_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let item of members) {
 | 
					    for (let item of members) {
 | 
				
			||||||
        users.push(item.username);
 | 
					        users.push(item.message_id);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return users;
 | 
					    return users;
 | 
				
			||||||
@@ -513,17 +526,14 @@ function compareData(listitems, doneitems) {
 | 
				
			|||||||
    let output = [];
 | 
					    let output = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let item of listitems) {
 | 
					    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);
 | 
					            output.push(item);
 | 
				
			||||||
        } else if (doneitems.toUpperCase().includes(item.name.toUpperCase())) {
 | 
					        } else if (probability(item.name.toLowerCase(), doneitems.toLowerCase()).best > 0.6) {
 | 
				
			||||||
            output.push(item);
 | 
					            output.push({item: item, count: probability(item.name, doneitems).count});
 | 
				
			||||||
        } 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) {
 | 
					 | 
				
			||||||
            output.push(item);
 | 
					            output.push(item);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -532,19 +542,33 @@ function compareData(listitems, doneitems) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function probability(cur_item, data) {
 | 
					function probability(cur_item, data) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    let best = 0;
 | 
					    let best = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let pos;
 | 
				
			||||||
 | 
					    let count = 0;
 | 
				
			||||||
 | 
					    let numbers = "123456789";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let i = 0; i < data.length; i++) {
 | 
					    for (let i = 0; i < data.length; i++) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let prob = stringSimilarity.compareTwoStrings(cur_item, data.slice(i, i + cur_item.length));
 | 
					        let prob = stringSimilarity.compareTwoStrings(cur_item, data.slice(i, i + cur_item.length));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (prob > best) {
 | 
					        if (prob > best) {
 | 
				
			||||||
            best = prob;
 | 
					            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
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -346,7 +346,12 @@ function Detail() {
 | 
				
			|||||||
                                        `);
 | 
					                                        `);
 | 
				
			||||||
                                                for (let x = 0; x < el.content.length; x++) {
 | 
					                                                for (let x = 0; x < el.content.length; x++) {
 | 
				
			||||||
                                                    const el2 = el.content[x]
 | 
					                                                    const el2 = el.content[x]
 | 
				
			||||||
                                                    $(`.${el.name}`).append(`<div class="collapse" id="${el.name}"><ul><li>${el2.count}x ${el2.name}</li></ul></div>`);
 | 
					                                                    $(`.${el.name}`).append(`<div class="collapse" id="${el.name}">
 | 
				
			||||||
 | 
					                                                    <div class="card itemcard" style="background-color: transparent; ">
 | 
				
			||||||
 | 
					                                                    <div class="card-body">
 | 
				
			||||||
 | 
					                                                    ${el2.name}${el2.count}
 | 
				
			||||||
 | 
					                                                  </div>
 | 
				
			||||||
 | 
					                                                    </div>`);
 | 
				
			||||||
                                                }
 | 
					                                                }
 | 
				
			||||||
                                            }
 | 
					                                            }
 | 
				
			||||||
                                            lala();
 | 
					                                            lala();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ function checkAuth() {
 | 
				
			|||||||
          console.error("Get id token client error: ", error)
 | 
					          console.error("Get id token client error: ", error)
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
      } catch {
 | 
					      } catch {
 | 
				
			||||||
        console.error("checkAuth error: ")
 | 
					        console.error("checkAuth error: ");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // document.getElementById("loginbutton").style.display = "none";
 | 
					      // document.getElementById("loginbutton").style.display = "none";
 | 
				
			||||||
@@ -31,8 +31,7 @@ function checkAuth() {
 | 
				
			|||||||
      // document.getElementById("loginbutton").style.display = "block";
 | 
					      // document.getElementById("loginbutton").style.display = "block";
 | 
				
			||||||
      console.log("Check Auth error", user)
 | 
					      console.log("Check Auth error", user)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  })
 | 
					  });
 | 
				
			||||||
  var user = firebase.auth().currentUser;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
window.onload = function () {
 | 
					window.onload = function () {
 | 
				
			||||||
  checkAuth();
 | 
					  checkAuth();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,3 +95,7 @@ button:focus{
 | 
				
			|||||||
    outline: none !important;
 | 
					    outline: none !important;
 | 
				
			||||||
    box-shadow: none !important;
 | 
					    box-shadow: none !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.itemcard{
 | 
				
			||||||
 | 
					    height: 2%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
 | 
					var admin = require('firebase-admin');
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
function sendPush(msgtoken, title, text){
 | 
					function sendPush(msgtoken, title, text){
 | 
				
			||||||
  var message = {
 | 
					  var message = {
 | 
				
			||||||
@@ -9,7 +9,7 @@ function sendPush(msgtoken, title, text){
 | 
				
			|||||||
    token: msgtoken
 | 
					    token: msgtoken
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  firebaseAdmin.messaging().send(message)
 | 
					  admin.messaging().send(message)
 | 
				
			||||||
  .then(function(response) {
 | 
					  .then(function(response) {
 | 
				
			||||||
    // See the MessagingDevicesResponse reference documentation for
 | 
					    // See the MessagingDevicesResponse reference documentation for
 | 
				
			||||||
    // the contents of response.
 | 
					    // the contents of response.
 | 
				
			||||||
@@ -20,6 +20,12 @@ function sendPush(msgtoken, title, text){
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
module.exports = {
 | 
					
 | 
				
			||||||
    sendPush
 | 
					function sendMultiplePush(message_ids, title, text){
 | 
				
			||||||
 | 
					  for(var i = 0; i < message_ids.length; i++){
 | 
				
			||||||
 | 
					    sendPush(message_ids[i], title, text);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    sendPush,sendMultiplePush
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -17,6 +17,7 @@ var firebaseAdmin = admin.initializeApp({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
//Push
 | 
					//Push
 | 
				
			||||||
router.get('/push/:msgtoken/:message/:title', function (req, res, next) {
 | 
					router.get('/push/:msgtoken/:message/:title', function (req, res, next) {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  push.sendPush(req.params.msgtoken, req.params.title, req.params.message);
 | 
					  push.sendPush(req.params.msgtoken, req.params.title, req.params.message);
 | 
				
			||||||
  var sender = "Message Token: " + req.params.msgtoken + " Message: " + req.params.message + " Title: " + req.params.title;
 | 
					  var sender = "Message Token: " + req.params.msgtoken + " Message: " + req.params.message + " Title: " + req.params.title;
 | 
				
			||||||
  res.status(200).send(sender);
 | 
					  res.status(200).send(sender);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <input v-model="email" id="email" type="email">
 | 
					    <input v-model="email" id="email" type="email">
 | 
				
			||||||
    <input v-model="password" id="password" type="password">
 | 
					    <input v-model="password" id="password" type="password">
 | 
				
			||||||
    <button id="loginemailbutton" @click="loginemail()">Login with Email</button>
 | 
					    <button id="loginemailbutton" @click="loginemail">Login with Email</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <button id="loginbutton" @click="login()">Login with google</button>
 | 
					    <button id="loginbutton" @click="login">Login with google</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <a href="/registrieren"><button>Jetzt mit Email und Passwort Registrieren!</button></a>
 | 
					    <a href="/registrieren"><button>Jetzt mit Email und Passwort Registrieren!</button></a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user