GWM : mergerd the calculated api
This commit is contained in:
parent
20344bc589
commit
679a074da8
@ -233,34 +233,89 @@ exports.calculation_log = async (req, res) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const validateYearQuarter = (year, quarter) => {
|
||||||
|
if (!year || !quarter) {
|
||||||
|
return { ok: false, message: "Year and quarter are required" };
|
||||||
|
}
|
||||||
|
if (!["Q1", "Q2", "Q3", "Q4"].includes(quarter)) {
|
||||||
|
return {
|
||||||
|
ok: false,
|
||||||
|
message: "Invalid quarter. Accepted values: Q1, Q2, Q3, Q4",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return { ok: true };
|
||||||
|
};
|
||||||
|
|
||||||
|
async function runSurveyAutoSubmit(year, quarter) {
|
||||||
|
const autoSubmissionService = new SubmissionAutoFillService(dbConfig);
|
||||||
|
const autoFillMissingSubmissions =
|
||||||
|
await autoSubmissionService.autoFillMissingSubmissions(year, quarter);
|
||||||
|
const verifyCompleteness =
|
||||||
|
await autoSubmissionService.verifyCompleteness(year, quarter);
|
||||||
|
|
||||||
|
return { autoFillMissingSubmissions, verifyCompleteness };
|
||||||
|
}
|
||||||
|
|
||||||
|
async function runQuarterCalculation(year, quarter) {
|
||||||
|
const service = new IPICalculationService(dbConfig);
|
||||||
|
try {
|
||||||
|
const data = await service.runCompleteCalculation(year, quarter);
|
||||||
|
return { message: `IPI calculated for ${year} ${quarter}`, data };
|
||||||
|
} finally {
|
||||||
|
await service.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 5. Survey Auto Submit
|
// 5. Survey Auto Submit
|
||||||
exports.survey_auto_submit = async (req, res) => {
|
exports.survey_auto_submit = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const { year, quarter } = req.body;
|
const { year, quarter } = req.body;
|
||||||
|
const validation = validateYearQuarter(year, quarter);
|
||||||
|
if (!validation.ok) {
|
||||||
|
return res.status(400).json({ success: false, message: validation.message });
|
||||||
|
}
|
||||||
|
|
||||||
const autoSubmissionService = new SubmissionAutoFillService(dbConfig);
|
const result = await runSurveyAutoSubmit(year, quarter);
|
||||||
|
|
||||||
// Auto-fill missing submissions for specific year and quarter
|
|
||||||
const result = await autoSubmissionService.autoFillMissingSubmissions(year, quarter);
|
|
||||||
|
|
||||||
// Get report for specific quarter
|
|
||||||
// const result2 = await autoSubmissionService.getAutoFillReport(year, quarter);
|
|
||||||
|
|
||||||
// Verify completeness for specific quarter
|
|
||||||
const result3 = await autoSubmissionService.verifyCompleteness(year, quarter);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
res.json({ success: true, autoFillMissingSubmissions: result , verifyCompleteness: result3 });
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
res.json({ success: true, ...result });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error:', error);
|
console.error("Error:", error);
|
||||||
res.status(500).json({
|
res.status(500).json({
|
||||||
success: false,
|
success: false,
|
||||||
message: '',
|
message: "Error during survey auto submit",
|
||||||
error: error.message
|
error: error.message,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 6. Auto submit missing surveys, then run quarterly IPI calculation
|
||||||
|
exports.survey_auto_submit_and_calculate = async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { year, quarter } = req.body;
|
||||||
|
const validation = validateYearQuarter(year, quarter);
|
||||||
|
if (!validation.ok) {
|
||||||
|
return res.status(400).json({ success: false, message: validation.message });
|
||||||
|
}
|
||||||
|
|
||||||
|
const autoSubmitResult = await runSurveyAutoSubmit(year, quarter);
|
||||||
|
const calculationResult = await runQuarterCalculation(year, quarter);
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
success: true,
|
||||||
|
message: `Auto submit and IPI calculation completed for ${year} ${quarter}`,
|
||||||
|
year,
|
||||||
|
quarter,
|
||||||
|
steps: {
|
||||||
|
survey_auto_submit: autoSubmitResult,
|
||||||
|
calculate_quarter: calculationResult,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error:", error);
|
||||||
|
res.status(500).json({
|
||||||
|
success: false,
|
||||||
|
message: "Error during auto submit and quarterly calculation",
|
||||||
|
error: error.message,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -134,6 +134,49 @@ router.post("/survey_auto_submit",[] , calculationController.survey_auto_submit)
|
|||||||
|
|
||||||
router.post("/calculate_quarter",[] , calculationController.calculate_quarter);
|
router.post("/calculate_quarter",[] , calculationController.calculate_quarter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @swagger
|
||||||
|
* /api/survey_auto_submit_and_calculate:
|
||||||
|
* post:
|
||||||
|
* summary: Auto submit missing surveys, then calculate IPI for the quarter
|
||||||
|
* description: |
|
||||||
|
* Runs in sequence:
|
||||||
|
* 1. survey_auto_submit — auto-fill missing submissions and verify completeness
|
||||||
|
* 2. calculate_quarter — run IPI calculation for the same year and quarter
|
||||||
|
* tags: [IIP Calculation]
|
||||||
|
* security:
|
||||||
|
* - appSignature: []
|
||||||
|
* - CSRF: []
|
||||||
|
* requestBody:
|
||||||
|
* required: true
|
||||||
|
* content:
|
||||||
|
* application/json:
|
||||||
|
* schema:
|
||||||
|
* type: object
|
||||||
|
* required:
|
||||||
|
* - year
|
||||||
|
* - quarter
|
||||||
|
* properties:
|
||||||
|
* year:
|
||||||
|
* type: integer
|
||||||
|
* example: 2025
|
||||||
|
* quarter:
|
||||||
|
* type: string
|
||||||
|
* enum: [Q1, Q2, Q3, Q4]
|
||||||
|
* example: Q2
|
||||||
|
* responses:
|
||||||
|
* 200:
|
||||||
|
* description: Auto submit and quarterly calculation completed successfully
|
||||||
|
* 400:
|
||||||
|
* description: Invalid year or quarter
|
||||||
|
* 500:
|
||||||
|
* description: Server error
|
||||||
|
*/
|
||||||
|
router.post(
|
||||||
|
"/survey_auto_submit_and_calculate",
|
||||||
|
[],
|
||||||
|
calculationController.survey_auto_submit_and_calculate
|
||||||
|
);
|
||||||
|
|
||||||
router.get("/calculate_month",[] , calculationController.calculate_month);
|
router.get("/calculate_month",[] , calculationController.calculate_month);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user