Establishment mapped count added in product list : GWM

This commit is contained in:
Gowtham M 2025-11-06 12:02:53 +05:30
parent 5c4bc028ba
commit 28fcfbebd4
2 changed files with 33 additions and 11 deletions

View File

@ -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 });
}
};

View File

@ -27,7 +27,6 @@ exports.getAllUnits = async (req, res) => {
],
],
},
logging: console.log
});
res.status(200).json({ status: "success",unit_count : units.length, data: units });