GWM : getProductSubmissionHistory api added
This commit is contained in:
parent
8214219320
commit
bb4667b90e
@ -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 });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|||||||
@ -76,15 +76,15 @@ module.exports = (sequelize, DataTypes) => {
|
|||||||
timestamps: false,
|
timestamps: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
SubmissionProduct.associate = (models) => {
|
|
||||||
SubmissionProduct.belongsTo(models.Submission, {
|
|
||||||
foreignKey: "submission_id",
|
|
||||||
as: "submission",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
SubmissionProduct.associate = (models) => {
|
SubmissionProduct.associate = (models) => {
|
||||||
|
|
||||||
|
SubmissionProduct.belongsTo(models.Submission, {
|
||||||
|
foreignKey: "submission_id",
|
||||||
|
as: "submission",
|
||||||
|
});
|
||||||
|
|
||||||
SubmissionProduct.belongsTo(models.Product, {
|
SubmissionProduct.belongsTo(models.Product, {
|
||||||
foreignKey: "product_id",
|
foreignKey: "product_id",
|
||||||
as: "product",
|
as: "product",
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
* @param {string} currentQuarter - e.g. 'Q4'
|
* @param {string} currentQuarter - e.g. 'Q4'
|
||||||
* @returns {object} - structured period data
|
* @returns {object} - structured period data
|
||||||
*/
|
*/
|
||||||
exports.getQuarterPeriods = (currentYear, currentQuarter) => {
|
exports.getQuarterPeriods = (currentYear, currentQuarter) => {
|
||||||
// Define quarters based on Calander year (Jan–Dec)
|
// Define quarters based on Calander year (Jan–Dec)
|
||||||
const quarters = {
|
const quarters = {
|
||||||
Q1: ["Jan", "Feb", "Mar"],
|
Q1: ["Jan", "Feb", "Mar"],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user