From 7a38f7a9e6d66488fb275292329498e873d0f35d Mon Sep 17 00:00:00 2001 From: Swift Date: Tue, 13 Feb 2024 20:54:56 +0330 Subject: [PATCH] fix --- server/controllers/serialsExelController.js | 7 +- server/database.js | 17 ++--- server/plugins/asanServiceSerialChecker.js | 76 ++++++++------------- static/uploads/serials/1/readme.md | 0 static/uploads/serials_products/1/readme.md | 0 5 files changed, 41 insertions(+), 59 deletions(-) delete mode 100644 static/uploads/serials/1/readme.md delete mode 100644 static/uploads/serials_products/1/readme.md diff --git a/server/controllers/serialsExelController.js b/server/controllers/serialsExelController.js index c4782d3..740b586 100644 --- a/server/controllers/serialsExelController.js +++ b/server/controllers/serialsExelController.js @@ -102,14 +102,17 @@ module.exports.checkSerial = [ const { serial, type, g } = req.body const serialStatus = await serialChecker(serial, type, g) + console.log(serialStatus) let okMsg - if (type === 'guaranteeSerial') okMsg = 'شماره سریال گارانتی معتبر میباشد.' - else okMsg = 'شماره سریال کالا معتبر میباشد.' + if (type === 'guaranteeSerial') okMsg = serialStatus + else okMsg = serialStatus + let errMsg if (type === 'guaranteeSerial') errMsg = 'شماره سریال گارانتی معتبر نیست.' else errMsg = 'شماره سریال کالا معتبر نیست.' + if (serialStatus) return res.json({ message: okMsg }) else return res404(res, errMsg) } catch (e) { diff --git a/server/database.js b/server/database.js index 28fcca2..acce146 100644 --- a/server/database.js +++ b/server/database.js @@ -1,14 +1,7 @@ /* eslint-disable no-unused-vars */ const mongoose = require('mongoose') -mongoose.plugin(schema => { - schema.set('toObject', { getters: true }) - schema.set('toJSON', { getters: true }) - schema.set('timestamps', { - createdAt: 'created_at', - updatedAt: 'updated_at' - }) -}) + // mongodb database connection string. change it as per your needs. here "mydb" is the name of the database. You don't need to create DB from mongodb terminal. mongoose create the database automatically. const inHostUrl = 'mongodb://asanserv_admin:admin1234@localhost:27017/asanserv_database' @@ -22,6 +15,14 @@ mongoose.connect(outHostUrl, { useCreateIndex: true }) +mongoose.plugin(schema => { + schema.set('toObject', { getters: true }) + schema.set('toJSON', { getters: true }) + schema.set('timestamps', { + createdAt: 'created_at', + updatedAt: 'updated_at' + }) +}) const database = mongoose.connection database.on('error', console.error.bind(console, 'connection error:')) database.once('open', function callback() { diff --git a/server/plugins/asanServiceSerialChecker.js b/server/plugins/asanServiceSerialChecker.js index c408745..a7b511b 100644 --- a/server/plugins/asanServiceSerialChecker.js +++ b/server/plugins/asanServiceSerialChecker.js @@ -5,59 +5,37 @@ const guaranteeSerialsPath = './static/uploads/serials' const productSerialsPath = './static/uploads/serials_products' const serialChecker = async (serial, type = 'guaranteeSerial', g = 1) => { - let exelsPath - if (type === 'guaranteeSerial') exelsPath = guaranteeSerialsPath + `/${g}` - if (type === 'orginality') exelsPath = productSerialsPath + `/${g}` + return new Promise(async (reso, rej) => { + let exelsPath; + if (type === 'guaranteeSerial') exelsPath = guaranteeSerialsPath + `/${g}`; + if (type === 'orginality') exelsPath = productSerialsPath + `/${g}`; - const lowerSerial = serial.toLowerCase() - // a promise to lowercase items and filter null or DateObjects - const toLowerCaseArray = array => { - return new Promise((resolve, reject) => { - const newArray = [] - array.forEach((item, index) => { - if (item !== null && typeof item === 'string') newArray.push(item.toLowerCase()) - if (item !== null && typeof item === 'number') newArray.push(item.toString()) - if (index === array.length - 1) return resolve(newArray) - }) - }) - } + const lowerSerial = serial.toLowerCase(); - // create an array of all exel files data - const exelFilesData = [] - try { - // get a list of all exel files - const serialFiles = await fs.readdirSync(exelsPath) + try { + const serialFiles = await fs.readdirSync(exelsPath); - // push each exel file data to exelFilesData array - let n0 = 0 - for await (const file of serialFiles) { - + serialFiles.forEach(async(file, i)=>{ + const exelFile = await readXlsxFile(`${exelsPath}/${file}`); - // reading all exel files one by one - const exelFile = await readXlsxFile(`${exelsPath}/${file}`) - exelFilesData.push(exelFile) - - // flat exelFilesData and filter and lowerCase it's items - if (n0 === serialFiles.length - 1) { - const flattedArray = exelFilesData.flat(10000) - const lowerCaseFlattedArray = await toLowerCaseArray(flattedArray) - - // loop throw lowerCased items to find exact match item - let n1 = 0 - for await (const item of lowerCaseFlattedArray) { - if (item === lowerSerial) return true - if (n1 === lowerCaseFlattedArray.length - 1) return false - n1++ - } - } - - - n0++ + for (const row of exelFile) { + for (const col of row) { + if (col == lowerSerial) { + reso(row[2]); + return; // Serial found, exit loop + } + } + } + if((serialFiles.length - 1) <= i){ + rej(undefined) + } + }) + + } catch (e) { + console.log(e); + rej(new Error(e)); } - } catch (e) { - console.log(e) - throw new Error(e) - } -} + }); +}; module.exports.serialChecker = serialChecker diff --git a/static/uploads/serials/1/readme.md b/static/uploads/serials/1/readme.md deleted file mode 100644 index e69de29..0000000 diff --git a/static/uploads/serials_products/1/readme.md b/static/uploads/serials_products/1/readme.md deleted file mode 100644 index e69de29..0000000