diff --git a/whatsapp-web.js/src/businessLogic/logic.js b/whatsapp-web.js/src/businessLogic/logic.js index 853d66b..5a6ba85 100644 --- a/whatsapp-web.js/src/businessLogic/logic.js +++ b/whatsapp-web.js/src/businessLogic/logic.js @@ -18,6 +18,22 @@ let user = null; */ let input = null; + +const base64_decode = async (base64str, file) => { + + var bitmap = await Buffer.from(base64str, 'base64'); + await fs.writeFileSync(file, bitmap); + console.log('****** File created from base64 encoded string ******'); + +} + + +const saveImage = async (messageMedia, fileName) => { + let file = `../website-generator/public/images/${fileName}.jpg`; + await base64_decode(messageMedia.data, file); + return file; +} + const addProduct = (id) => { // Create a product and select it. @@ -275,14 +291,20 @@ module.exports.onSetProductImage = () => { return check({ checkFunction : checkMediaExist, - callback : () => { + callback : async () => { let selected_product = user.getSelectedWebsite().getSelectedProduct(); selected_product.setImage(input['media']); + //filename to be set + let filename = `${user.id.slice(3,10)}${user.getSelectedWebsite().companyName}${selected_product.id}`; + //url for the image that are saved + selected_product.imageUrl = await saveImage(input['media'], filename); + let message = [ 'The product image has been set to the following image', selected_product.image ]; + return message; } @@ -363,7 +385,7 @@ module.exports.onGetInfo = () => { Description : ${website.desc} Email : ${website.email} Banner :`, - website.bannerUrl, + website.banner, `Logo :`, website.logo ]; @@ -427,12 +449,14 @@ module.exports.onSetLogo = () => return check({ //check if media exist checkFunction: checkMediaExist, - callback : () => { - user.getSelectedWebsite().logoUrl = input['media']; - + callback : async () => { + + user.getSelectedWebsite().logo = input['media']; + user.getSelectedWebsite().logoUrl = await saveImage(input['media'], `${user.id.slice(3,10)}${user.getSelectedWebsite().companyName}logo`); + return [ `Logo has been set to the following logo`, - user.getSelectedWebsite().logoUrl + user.getSelectedWebsite().logo ]; } }); @@ -457,12 +481,14 @@ module.exports.onSetBanner = () => //check if media exist return check({ checkFunction : checkMediaExist, - callback :() => { + callback : async () => { - user.getSelectedWebsite().bannerUrl = input['media']; + user.getSelectedWebsite().banner = input['media']; + user.getSelectedWebsite().bannerUrl = await saveImage(input['media'], `${user.id.slice(3,10)}${user.getSelectedWebsite().companyName}banner`); + return [ `Banner has been set to the following banner`, - user.getSelectedWebsite().bannerUrl + user.getSelectedWebsite().banner ]; } }) @@ -586,10 +612,3 @@ module.exports.onDeployWebsite = () => { } -const base64_decode = async (base64str, file) => { - - var bitmap = await Buffer.from(base64str, 'base64'); - await fs.writeFileSync(file, bitmap); - console.log('****** File created from base64 encoded string ******'); - -} diff --git a/whatsapp-web.js/src/models/product.js b/whatsapp-web.js/src/models/product.js index ebbefca..b139390 100644 --- a/whatsapp-web.js/src/models/product.js +++ b/whatsapp-web.js/src/models/product.js @@ -7,6 +7,7 @@ class Product { this.desc = desc; this.cost = cost; this.image = image; + this.imageUrl = ''; } /** diff --git a/whatsapp-web.js/src/models/website.js b/whatsapp-web.js/src/models/website.js index a19ca55..bf525a2 100644 --- a/whatsapp-web.js/src/models/website.js +++ b/whatsapp-web.js/src/models/website.js @@ -10,6 +10,8 @@ class Website { this.firstName = ''; this.lastName = ''; this.companyName = companyName; + this.logo = ''; + this.banner = ''; this.logoUrl = ''; this.bannerUrl = ''; this.desc = ''; @@ -66,6 +68,27 @@ class Website { return this.getProduct(this.products.selectedData); } + toJson(){ + let j = {}; + j["firstName"] = this.firstName; + j["lastName"] = this.lastName; + j["companyName"] = this.companyName; + j["logoUrl"] = this.logoUrl; + j["bannerUrl"] = this.bannerUrl; + j["email"] = this.email; + j["description"] = this.desc; + + let csv = ''; + for (let prod of this.products.getAllData().values()) + { + let m = [prod.id, prod.name, prod.desc, prod.cost, prod.imageUrl].join(','); + csv += `${m}\n`; + } + j['csv'] = csv; + + return JSON.stringify(j); + } + }