done purchases remove, ocr scan, read image
This commit is contained in:
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user