summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Ukaykhingmarma28 <ukaykhingmarma28@gmail.com>2025-02-03 23:17:20 +0600
committerLibravatar Ukaykhingmarma28 <ukaykhingmarma28@gmail.com>2025-02-03 23:17:20 +0600
commit9cb521aa1b3dd7252ee906fb74ea9b592ad5799f (patch)
tree1cdfddaa43f5a33846d4a4c23e8ffaba810ef3bd
parent9836dbb488b8083eeccbaaad3b0dbd413514a8d4 (diff)
downloadinventory-9cb521aa1b3dd7252ee906fb74ea9b592ad5799f.tar.gz
inventory-9cb521aa1b3dd7252ee906fb74ea9b592ad5799f.zip
serial number generation change
-rw-r--r--index.js25
1 files changed, 21 insertions, 4 deletions
diff --git a/index.js b/index.js
index fb63662..2354315 100644
--- a/index.js
+++ b/index.js
@@ -1,7 +1,6 @@
import express from 'express';
import { MongoClient } from 'mongodb';
import { google } from 'googleapis';
-import crypto from 'crypto';
import dotenv from 'dotenv';
import fs from 'fs';
import cors from 'cors';
@@ -49,8 +48,26 @@ async function connectDB() {
connectDB();
-function generateSerialNumber(mac) {
- return `JPC${crypto.createHash('sha3-224').update(mac).digest('hex').toUpperCase().substring(0, 6)}`;
+async function generateSerialNumber() {
+ const db = client.db(dbName);
+ const collection = db.collection(collectionName);
+
+ const year = new Date().getFullYear().toString().slice(-2); // Get last two digits of the year
+
+ const latestDevice = await collection.find({ serialNumber: { $regex: `^JPC${year}` } })
+ .sort({ serialNumber: -1 })
+ .limit(1)
+ .toArray();
+
+ let nextNumber = 1; // Default start
+
+ if (latestDevice.length > 0) {
+ const lastSerial = latestDevice[0].serialNumber;
+ const lastNumber = parseInt(lastSerial.substring(5, 11), 10); // Extract last 6 digits
+ nextNumber = lastNumber + 1;
+ }
+
+ return `JPC${year}${String(nextNumber).padStart(6, '0')}`;
}
app.post('/upload', async (req, res) => {
@@ -70,7 +87,7 @@ app.post('/upload', async (req, res) => {
return res.status(400).send(`Device with the same MAC address is already registered, ${existingDevice.serialNumber}`);
}
- const serialNumber = generateSerialNumber(mac);
+ const serialNumber = await generateSerialNumber();
const newItem = {
serialNumber,