add function post retire data to exprofile system

This commit is contained in:
Warunee Tamkoo 2026-01-20 15:03:39 +07:00
parent 648fb33cc2
commit 7423a4f8b5

View file

@ -168,3 +168,65 @@ async function getToken(ClientID: string, ClientSecret: string): Promise<string>
return Promise.reject({ message: "Error occurred", error });
}
}
// function post retire data to exprofile system
export async function PostRetireToExprofile(
citizenID: string,
prefix: string,
firstName: string,
lastName: string,
retireYear: string,
positionName: string,
positionTypeName: string,
positionLevelName: string,
retireDate: Date,
organizeName: string, // child4Name child3Name child2Name child1Name rootName
retireTypeName: string, // เช่น เกษียณ, ขอโอนออก, ลาออก, ปลดออก, ไล่ออก, ...
) {
let retryCount = 0;
const maxRetries = 2;
while (retryCount < maxRetries) {
try {
const token = await getToken(clientId, clientSecret);
if (!token) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถขอ Token ได้");
}
const scope = "importOfficerRetireData";
const body = {
scope: scope,
data: {
citizenID: citizenID,
prenameTH: prefix,
firstNameTH: firstName,
lastNameTH: lastName,
retireYear,
positionNameTH: positionName,
positionTypeNameTH: positionTypeName,
positionLevelNameTH: positionLevelName,
retireDate,
organizeNameTH: organizeName,
retireTypeNameTH: retireTypeName,
},
};
const res = await axios.post(API_URL_BANGKOK + "/importData", body, {
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
});
return res.data;
} catch (error: any) {
if (error.response?.status === 500 && retryCount < maxRetries - 1) {
TokenCache.delete(`${clientId}:${clientSecret}`);
retryCount++;
continue;
}
throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "ไม่สามารถติดต่อ API ได้");
}
}
}