From 28fcfbebd4af7b5116dfae5bcd6bb23ab7cf3f6b Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Thu, 6 Nov 2025 12:02:53 +0530 Subject: [PATCH] Establishment mapped count added in product list : GWM --- app/controllers/products.controller.js | 43 +++++++++++++++++++------ app/controllers/unitMasterController.js | 1 - 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/app/controllers/products.controller.js b/app/controllers/products.controller.js index b66cd26..a979c35 100644 --- a/app/controllers/products.controller.js +++ b/app/controllers/products.controller.js @@ -1,10 +1,13 @@ -const db = require("../models"); -const Product = db.Product; const fs = require("fs"); const csv = require("csv-parser"); const path = require("path"); +const db = require("../models"); +const { Sequelize } = require("sequelize"); +const Product = db.Product; const UnitMaster = db.UnitMaster; + + exports.createProduct = async (req, res) => { try { @@ -13,7 +16,7 @@ exports.createProduct = async (req, res) => { res.status(201).send({'status':"success",'message':"created successfully",'data': data }); } catch (error) { - res.status(500).send({'status':"failed",'message':err.message }); + res.status(500).send({'status':"failed",'message':error.message }); } }; @@ -21,6 +24,16 @@ exports.getAllProducts = async (req, res) => { try { const data = await Product.findAll({ + attributes: { + include: [ + [ + Sequelize.literal( + `(SELECT COUNT(*) FROM establishment_products AS EP WHERE EP.product_id = products.id)` + ), + "mapped_establishment_count", + ], + ], + }, include: [ { model: UnitMaster, @@ -28,12 +41,15 @@ exports.getAllProducts = async (req, res) => { attributes: ["uom"], }, ], + order: [ + [Sequelize.literal("COALESCE(products.updated_at, products.created_at) DESC")], + ], }); res.status(200).send({'status':"success",'message':"Fetched successfully",'product_count': data.length, 'data': data }); } catch (error) { - res.status(500).send({'status':"failed",'message':err.message }); + res.status(500).send({'status':"failed",'message':error.message }); } }; @@ -47,24 +63,30 @@ exports.getProductById = async (req, res) => { res.status(200).send({'status':"success",'message':"Fetched successfully",'data': data }); } catch (error) { - res.status(500).send({'status':"failed",'message':err.message }); + res.status(500).send({'status':"failed",'message':error.message }); } }; exports.updateProduct = async (req, res) => { try { - const [updated] = await Product.update(req.body, { where: { id: req.params.id } }); + const object = { + ...req.body, + updated_at: Sequelize.literal("NOW()") + }; + + const [updated] = await Product.update(object, { where: { id: req.params.id } }); if (!updated) res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" }); res.status(200).send({'status':"success",'message':"Updated successfully",'data': "" }); } catch (error) { - res.status(500).send({'status':"failed",'message':err.message }); + res.status(500).send({'status':"failed",'message':error.message }); } }; + exports.deleteProduct = async (req, res) => { try { @@ -75,9 +97,10 @@ exports.deleteProduct = async (req, res) => { res.status(200).send({'status':"success",'message':"Deleted successfully",'data': "" }); } catch (error) { - res.status(500).send({'status':"failed",'message':err.message }); + res.status(500).send({'status':"failed",'message':error.message }); } }; + exports.uploadProductsFromCSV = async (req, res) => { try { // Check if file exists @@ -199,7 +222,7 @@ exports.downloadProductSample = async (req, res) => { try { const filePath = path.join(__dirname, "../writable/uploads/sample_files/products_upload_sample.csv"); return res.download(filePath, "products_upload_sample.csv"); - } catch (err) { - return res.status(500).send({ status: "failed", message: err.message }); + } catch (error) { + return res.status(500).send({ status: "failed", message: error.message }); } }; diff --git a/app/controllers/unitMasterController.js b/app/controllers/unitMasterController.js index 34346f6..53f77ef 100644 --- a/app/controllers/unitMasterController.js +++ b/app/controllers/unitMasterController.js @@ -27,7 +27,6 @@ exports.getAllUnits = async (req, res) => { ], ], }, - logging: console.log }); res.status(200).json({ status: "success",unit_count : units.length, data: units });