GWM : getProductSubmissionHistory api added

This commit is contained in:
Gowtham M 2025-12-02 12:27:01 +05:30
parent 8214219320
commit bb4667b90e
4 changed files with 109 additions and 7 deletions

View File

@ -872,6 +872,11 @@ exports.getPreviousForecastData = async (req, res) => {
return res.status(404).json({ status:"failed", message:"No previous product row found" }); return res.status(404).json({ status:"failed", message:"No previous product row found" });
} }
submissionProduct.dataValues.quarter_periods = getQuarterPeriods(
Number(year),
quarter
);
return res.status(200).json({ status:"success", data: submissionProduct }); return res.status(200).json({ status:"success", data: submissionProduct });
} catch (err) { } catch (err) {
@ -879,3 +884,72 @@ exports.getPreviousForecastData = async (req, res) => {
} }
}; };
exports.getProductSubmissionHistory = async (req, res) => {
try {
const { establishment_id, product_id } = req.query;
if(!establishment_id || !product_id){
return res.status(400).json({ status:"failed", message:"Missing required query params" });
}
// find submission id
const submissions = await Submission.findAll({
where: { establishment_id },
attributes: ["id"]
});
if(!submissions){
return res.status(404).json({ status:"failed", message:"No submissions found for this establishment" });
}
const submissionIds = submissions.map(s => s.id);
// 2. Find submission product history with quarter + year + sorting
let submissionProductsData = await SubmissionProduct.findAll({
where: {
submission_id: submissionIds,
product_id
},
include: [
{
model: Submission,
as: "submission",
attributes: ["quarter", "year", "created_at"]
},
{
model: Product,
as: "product",
attributes: ["product_name", "hs_code"]
}
],
order: [
[{ model: Submission, as: "submission" }, "year", "ASC"],
[
Sequelize.literal(`
FIELD(submission.quarter, 'Q4', 'Q3', 'Q2', 'Q1')
`),
"DESC"
],
]
});
if(!submissionProductsData){
return res.status(404).json({ status:"failed", message:"No previous product row found" });
}
for (const d of submissionProductsData) {
d.dataValues.quarter_periods = getQuarterPeriods(
Number(d.submission.year),
d.submission.quarter
);
}
return res.status(200).json({ status:"success", data: submissionProductsData });
} catch (err) {
return res.status(500).json({ status:"failed", message: err.message });
}
};

View File

@ -76,14 +76,14 @@ module.exports = (sequelize, DataTypes) => {
timestamps: false, timestamps: false,
}); });
SubmissionProduct.associate = (models) => { SubmissionProduct.associate = (models) => {
SubmissionProduct.belongsTo(models.Submission, { SubmissionProduct.belongsTo(models.Submission, {
foreignKey: "submission_id", foreignKey: "submission_id",
as: "submission", as: "submission",
}); });
};
SubmissionProduct.associate = (models) => {
SubmissionProduct.belongsTo(models.Product, { SubmissionProduct.belongsTo(models.Product, {
foreignKey: "product_id", foreignKey: "product_id",

View File

@ -2227,6 +2227,34 @@ router.post("/getQuarterPeriods",[verifySignature, verifyToken], submissionContr
*/ */
router.get("/submissions/getPreviousForecastData",[verifySignature, verifyToken], submissionController.getPreviousForecastData); router.get("/submissions/getPreviousForecastData",[verifySignature, verifyToken], submissionController.getPreviousForecastData);
/**
* @swagger
* /api/submissions/getProductSubmissionHistory:
* get:
* summary: Get Product submission history data based on Establishment + Product
* tags: [Submissions]
* security:
* - appSignature: []
* - bearerAuth: []
* parameters:
* - in: query
* name: establishment_id
* required: true
* schema: { type: integer }
* - in: query
* name: product_id
* required: true
* schema: { type: integer }
* responses:
* 200:
* description: Product submission history data fetched successfully
* 404:
* description: Not found
* 500:
* description: Server error
*/
router.get("/submissions/getProductSubmissionHistory",[verifySignature, verifyToken], submissionController.getProductSubmissionHistory);
/** /**
* @swagger * @swagger
* /api/submission-audit-history: * /api/submission-audit-history: