From a0429afc6d89b9dd6f4c5abb23c2e483c7324f93 Mon Sep 17 00:00:00 2001 From: Varun Date: Thu, 6 Mar 2025 12:06:19 +0530 Subject: [PATCH] changes in accept --- src/controllers/storeController.js | 42 +++++++++++++++++++++--------- src/controllers/tanksController.js | 4 +-- src/models/store.js | 5 ++++ 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/controllers/storeController.js b/src/controllers/storeController.js index ad76f70b..7f462f23 100644 --- a/src/controllers/storeController.js +++ b/src/controllers/storeController.js @@ -2065,6 +2065,7 @@ exports.getOrdersByCustomer = async (req, reply) => { } }; + exports.acceptQuotation = async (req, reply) => { try { const { quotationId } = req.params; @@ -2109,19 +2110,36 @@ exports.acceptQuotation = async (req, reply) => { for (const sensor of sensorTypes) { if (sensor.count > 0) { - await Insensors.updateMany( - { storeId, type: sensor.type, status: "available" }, - { $set: { status: "blocked", customerId } }, - { limit: sensor.count } - ); - - // Update SensorStock - await SensorStock.updateOne( - { storeId, type: sensor.type }, - { - $inc: { total_available: -sensor.count, total_blocked: sensor.count }, + const stock = await SensorStock.findOne({ storeId, type: sensor.type }); + + if (stock) { + let available = stock.total_available || 0; + let needed = sensor.count; + + let toBlock = Math.min(available, needed); + let excessNeeded = needed - toBlock; + + // Update Insensors for available sensors + if (toBlock > 0) { + await Insensors.updateMany( + { storeId, type: sensor.type, status: "available" }, + { $set: { status: "blocked", customerId } }, + { limit: toBlock } + ); } - ); + + // Update SensorStock + await SensorStock.updateOne( + { storeId, type: sensor.type }, + { + $inc: { + total_available: -toBlock, + total_blocked: toBlock, + excess_needed: excessNeeded > 0 ? excessNeeded : 0, + }, + } + ); + } } } diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 91af2d0f..4f04a887 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -5865,7 +5865,6 @@ client.on('connect', () => { }); - client.on('message', async (topic, message) => { console.log(`Message received on topic ${topic}:`, message.toString()); @@ -5971,7 +5970,6 @@ client.on('message', async (topic, message) => { if (inputConnection.motor_stop_status === "2" && status === 1) { const currentTime = moment().tz('Asia/Kolkata').format('DD-MMM-YYYY - HH:mm'); inputConnection.motor_stop_status = "1"; - inputConnection.motor_on_type = "manual"; inputConnection.stopTime = currentTime; } @@ -5987,6 +5985,8 @@ client.on('message', async (topic, message) => { }); + + // // API function to get survey data for a particular installer // diff --git a/src/models/store.js b/src/models/store.js index ea6b57dc..0b6a72fe 100644 --- a/src/models/store.js +++ b/src/models/store.js @@ -500,6 +500,11 @@ const SensorStockSchema = new mongoose.Schema({ required: true, default: 0, }, + excess_needed: { + type: Number, + required: true, + default: 0, + }, total_installed: { type: Number, required: true,