GWM : mergerd the calculated api

This commit is contained in:
Gowtham M 2026-06-09 18:05:27 +05:30
parent 20344bc589
commit 679a074da8
2 changed files with 117 additions and 19 deletions

View File

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

View File

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