done purchases remove, ocr scan, read image

This commit is contained in:
LukasNowy
2019-01-28 01:34:06 +01:00
parent d9c3d422d7
commit 93bbf9c2cb
203 changed files with 21267 additions and 41 deletions

View File

@ -1,5 +1,7 @@
const { query, nonQuery } = require("../db-config/postgresql-common");
const stringSimilarity = require('string-similarity');
//Create User Info
async function updateUser(uid, mid) {
@ -266,6 +268,61 @@ async function deleteItem(item_id, group_id, sl_id) {
}
}
//Move to Done Purchases (delete items from shoppinglist & move into done_purchases table)
async function moveDoneItems(uid, sl_id, billcontent) {
try {
//Get Items From Shoppinglist
let items = await query('SELECT row_to_json("Item") AS obj FROM "Item" JOIN "Group" USING (group_id) WHERE "Group".sl_id = $1;', [sl_id]);
let removeableItems = compareData(items, billcontent);
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if(dd<10) {
dd = '0'+dd
}
if(mm<10) {
mm = '0'+mm
}
today = mm + '/' + dd + '/' + yyyy;
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]);
}
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);
}
return "done"
}
catch(error) {
console.error(error);
}
}
//GET Done_Purchases
async function getDonePurchases(uid) {
try {
let result = await query('SELECT row_to_json("Done_Purchase") AS obj FROM "Done_Purchase" WHERE username = $1;', [uid]);
return result;
}
catch(error) {
console.error(error);
}
}
@ -393,7 +450,61 @@ function users_to_array(admin, members) {
return users;
}
//Compare Data
function compareData(listitems, doneitems) {
let output = [];
for(let item of listitems) {
if(doneitems.includes(item.name)) {
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.3) {
output.push(item);
}
else if(probability(item.name.toUpperCase(), doneitems.toUpperCase()) > 0.3) {
output.push(item);
}
else if(probability(item.name.toLowerCase(), doneitems.toLowerCase()) > 0.3) {
output.push(item);
}
}
return output;
}
function probability(cur_item, data) {
let best = 0;
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;
}
}
return best;
}
module.exports = {
getShoppinglistsAdmin, getShoppinglistsShared, newShoppinglist, displayShoppinglist, deleteShoppinglist, addGroup,
addItem, verifyInvite, createInvite, editShoppinglist, editGroup, editItem, deleteGroup, deleteItem, manInvite, updateUser
addItem, verifyInvite, createInvite, editShoppinglist, editGroup, editItem, deleteGroup, deleteItem, manInvite, updateUser,
moveDoneItems, getDonePurchases
}