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
|
||||
exports.survey_auto_submit = 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 autoSubmissionService = new SubmissionAutoFillService(dbConfig);
|
||||
|
||||
// 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 });
|
||||
|
||||
|
||||
const result = await runSurveyAutoSubmit(year, quarter);
|
||||
|
||||
res.json({ success: true, ...result });
|
||||
} catch (error) {
|
||||
console.error('Error:', error);
|
||||
console.error("Error:", error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: '',
|
||||
error: error.message
|
||||
message: "Error during survey auto submit",
|
||||
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);
|
||||
|
||||
/**
|
||||
* @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);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user