From 0300e61be597a8bca20b3ce7d82506b54762072a Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Mon, 27 Oct 2025 14:32:36 +0700 Subject: [PATCH] feat(ExRetirment):get document --- src/controllers/ExRetirementController.ts | 36 ++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/controllers/ExRetirementController.ts b/src/controllers/ExRetirementController.ts index 232f9a8c..7a3292f9 100644 --- a/src/controllers/ExRetirementController.ts +++ b/src/controllers/ExRetirementController.ts @@ -68,7 +68,8 @@ export class ExRetirementController extends Controller { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถขอ Token ได้"); } - const scope = requestBody.type === "officer" ? "getOfficerRetireData" : ""; + // const scope = requestBody.type === "officer" ? "getOfficerRetireData" : ""; + const scope = "getOfficerRetireData"; const startRecord = requestBody.page !== 1 ? (requestBody.page - 1) * 25 : 0; const formData = new FormData(); @@ -78,6 +79,7 @@ export class ExRetirementController extends Controller { formData.append("citizenID", requestBody.citizenID); formData.append("firstNameTH", requestBody.firstNameTH); formData.append("lastNameTH", requestBody.lastNameTH); + formData.append("officerTypeID", requestBody.type === "officer" ? "1" : "2"); const res = await axios.post(API_URL_BANGKOK + "/getData", formData, { headers: { @@ -96,6 +98,38 @@ export class ExRetirementController extends Controller { } } } + + @Get("/document/{documentId}") + async getDocument(@Path("documentId") officerDocumentID: 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 formData = new FormData(); + formData.append("scope", "getOfficerRetireFile"); + formData.append("officerDocumentID", officerDocumentID); + + const res = await axios.post(API_URL_BANGKOK + "/getData", formData, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + 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 ได้"); + } + } + } } async function getToken(ClientID: string, ClientSecret: string): Promise {