From 9cb521aa1b3dd7252ee906fb74ea9b592ad5799f Mon Sep 17 00:00:00 2001 From: Ukaykhingmarma28 Date: Mon, 3 Feb 2025 23:17:20 +0600 Subject: serial number generation change --- index.js | 25 +++++++++++++++++++++---- 1 file 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, -- cgit v1.2.3