From 6dd63fc206faff1b525fe1b6219baec49cd95fd7 Mon Sep 17 00:00:00 2001 From: Mr Swift Date: Wed, 16 Oct 2024 19:25:51 +0330 Subject: [PATCH] New serial reader system --- server/controllers/serialsExelController.js | 64 ++++++++++-------- server/models/Serials.js | 3 +- .../1/code-guaranty-18-7-1403-site.xlsx | Bin 13169 -> 0 bytes .../1/code-guaranty-19-2-1403-site.xlsx | Bin 11092 -> 0 bytes 4 files changed, 36 insertions(+), 31 deletions(-) delete mode 100644 static/uploads/serials/1/code-guaranty-18-7-1403-site.xlsx delete mode 100644 static/uploads/serials/1/code-guaranty-19-2-1403-site.xlsx diff --git a/server/controllers/serialsExelController.js b/server/controllers/serialsExelController.js index 08bb750..286224b 100644 --- a/server/controllers/serialsExelController.js +++ b/server/controllers/serialsExelController.js @@ -30,9 +30,9 @@ module.exports.addExel = [ const { type, g } = req.body try { const exelFile = await readXlsxFile(Buffer.from(file.data)); - const data = await creator(exelFile, type, g) + const data = await creator(exelFile, type, g, file.name) - const path = (type === 'guaranteeSerial' ? guaranteeSerialsPath : productSerialsPath) + `/${g}` + const path = (type === 'guaranteeSerial' ? guaranteeSerialsPath : productSerialsPath) + `/${g}` const files = await fs.readdirSync(path) for await (const item of files) { if (file.name === item) return res.status(422).json({ validation: { file: { msg: 'نام فایل تکراریست' } } }) @@ -57,7 +57,7 @@ module.exports.getAllExels = [ if (!type || !g) { res500(res, 'choose type') - } + } const validValues = ['guaranteeSerial', 'orginality'] if (!validValues.includes(type)) return res500(res, 'choose type') const path = (type === 'guaranteeSerial' ? guaranteeSerialsPath : productSerialsPath) + `/${g}` @@ -74,7 +74,7 @@ module.exports.getAllExels = [ module.exports.removeExel = [ - (req, res) => { + async (req, res) => { const type = req.query?.type const g = req.query?.g @@ -82,6 +82,8 @@ module.exports.removeExel = [ const validValues = ['guaranteeSerial', 'orginality'] if (!validValues.includes(type)) return res500(res, 'choose type') const path = (type === 'guaranteeSerial' ? guaranteeSerialsPath : productSerialsPath) + `/${g}` + await Serial.deleteMany({ fileName: req.params.name }) + fs.unlink(`${path}/${req.params.name}`, err => { if (err) return res404(res, _faSr.not_found.item_id) else return res.json({ message: _faSr.response.success_remove }) @@ -114,10 +116,10 @@ module.exports.checkSerial = [ type, kind: g }) - if(!serialStatus){ - res404(res, 'این کد در سامانه وجود ندارد') - }else{ - res.status(200).json({message:serialStatus.message}) + if (!serialStatus) { + res404(res, 'این کد در سامانه وجود ندارد') + } else { + res.status(200).json({ message: serialStatus.message }) } } catch (e) { @@ -127,38 +129,40 @@ module.exports.checkSerial = [ } ] -const creator = (exel, type, g) => { +const creator = (exel, type, g, name) => { return new Promise(async (resolve, reject) => { try { for (const row of exel) { // eslint-disable-next-line no-constant-condition const code = row[1].toString().trim().toLowerCase() - const serial = await Serial.findOne({ code }) - if (serial) { - console.info("Repeated serial ", row[1]) + const serial = await Serial.findOne({ code }) + if (serial) { + console.info("Repeated serial ", row[1]) + + serial.model = row[0] + serial.message = row[2] + serial.type = type + serial.kind = g + serial.fileName = name + serial.save() + } else { + await Serial.create( + { + code, + model: row[0], + message: row[2], + type, + fileName: name, + kind: g + } + ) + } - serial.model = row[0] - serial.message = row[2] - serial.type = type - serial.kind = g - serial.save() - } else { - await Serial.create( - { - code, - model: row[0], - message: row[2], - type, - kind: g - } - ) - } - } resolve("end") } catch (error) { console.log(error); - + reject(error.message) } }) diff --git a/server/models/Serials.js b/server/models/Serials.js index 2ee6568..e74aca4 100644 --- a/server/models/Serials.js +++ b/server/models/Serials.js @@ -12,7 +12,8 @@ const SerialSchema = mongoose.Schema({ kind:{ type:Number, enum:[2,1] - } + }, + fileName:String }) diff --git a/static/uploads/serials/1/code-guaranty-18-7-1403-site.xlsx b/static/uploads/serials/1/code-guaranty-18-7-1403-site.xlsx deleted file mode 100644 index 43e87fc4ce91ed64ddc55e71b0ec8d2d48691822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13169 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 Cclf9P diff --git a/static/uploads/serials/1/code-guaranty-19-2-1403-site.xlsx b/static/uploads/serials/1/code-guaranty-19-2-1403-site.xlsx deleted file mode 100644 index 706ff461414866571fcd362446a0098306e179ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11092 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 S7XUzp{sN%EyPfXm+y4LvPPuph