add status update logic

This commit is contained in:
2025-02-12 21:36:09 +05:30
parent 2952496f5c
commit 247b400707

68
src/utils/permitStatus.ts Normal file
View File

@@ -0,0 +1,68 @@
//Code to infer Internal stage from Status
const stagesMap = {
Submitted: ["Submitted", "New", "Plans Received"],
"In Review": [
"In Process",
"In Progress",
"In Review",
"Plan Review In Process",
],
"Awaiting Client Reply": [
"Rejected",
"Revision",
"Revision Required",
"Revisions Required",
"Review Verification",
"Awaiting Revisions",
"Pending Client Input",
"Pending Additional Review",
"Awaiting Client Reply",
"Ready to Issue",
"Pending Permit Issuance",
"Approved with Conditions",
],
Issued: ["Permit Issued", "Issued"],
Completed: [
"Approved",
"Administrative Close",
"Closed",
"Closed - Supp-Rev Approved",
"Closed - Void",
"Closed - Finaled",
"Closed - COC Issued",
"Closed - Withdrawn",
"Closed - CO Issued",
"Complete",
"CO Approved",
],
Expired: ["Expired"],
"Cancel/Void": ["Cancel", "Canceled", "Withdrawn"],
};
export async function getStage(
status: string,
internalStage: { pipeline: Array<{ name: string }>; currentStage: number }
) {
let newStage = "";
for (let [stage, statuses] of Object.entries(stagesMap)) {
if (statuses.includes(status)) {
newStage = stage;
break;
}
}
const currentStageIndex = internalStage.currentStage;
const newStageIndex = internalStage.pipeline.findIndex(
(stage) => stage.name === newStage
);
if (newStageIndex !== -1 && newStageIndex !== currentStageIndex) {
if (currentStageIndex >= 11 && newStageIndex < currentStageIndex) {
console.log("No change");
return internalStage.currentStage;
} else {
console.log("Current stage changed to:", newStageIndex, newStage);
return newStageIndex;
}
}
}