diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index 0649c2b..c49da70 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -12,6 +12,7 @@ import { Request, Query, UploadedFile, + // Extension, } from "tsoa"; import { AppDataSource } from "../database/data-source"; import { In, Not } from "typeorm"; @@ -61,7 +62,7 @@ import { DevelopmentRisk, UpdateDevelopmentRisk } from "../entities/DevelopmentR import { DevelopmentOther, UpdateDevelopmentOther } from "../entities/DevelopmentOther"; import permission from "../interfaces/permission"; import { Brackets } from "typeorm"; - +import Extension from "../interfaces/extension"; @Route("api/v1/development/main") @Tags("Development") @Security("bearerAuth") @@ -2947,37 +2948,36 @@ export class DevelopmentController extends Controller { const before = null; await Promise.all( getDevelopments.map(async (item: any) => { - if (item["รหัสประจำตัวประชาชน"] == undefined || item["รหัสประจำตัวประชาชน"].length != 13) + const citizenId:string = item["รหัสประจำตัวประชาชน"] == null || item["รหัสประจำตัวประชาชน"] == "" + ? "" + : String(item["รหัสประจำตัวประชาชน"]).trim(); + if (citizenId.length !== 13) return; const oldProfile: any = getDevelopment.developmentHistorys.find( - (x) => x.citizenId == item["รหัสประจำตัวประชาชน"], + (x) => x.citizenId == citizenId, ); if (oldProfile != null) { if (oldProfile.isDone == true) return; } - if (item["ประเภท"] == undefined) return; + if (item["ประเภท"] == null) return; let development = Object.assign(new DevelopmentHistory(), oldProfile); if (item["ประเภท"] == "ข้าราชการกรุงเทพมหานครสามัญ" || item["ประเภท"] == "ขรก.กทม. สามัญ") { await new CallAPI() - .GetData(request, `/org/unauthorize/officer/citizen/${item["รหัสประจำตัวประชาชน"]}`) + .GetData(request, `/org/unauthorize/officer/citizen/${citizenId}`) .then(async (x: any) => { development = Object.assign(development, x); - development.dateStart = - item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; - development.dateEnd = - item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; + development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; + development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy")as Date; development.order = - item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null ? null - : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; - development.dateOrder = - item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined - ? null - : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); + development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy")as Date; development.trainingDays = - item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); development.posLevelId = x.posLevelId; development.posTypeId = x.posTypeId; + development.posExecutive = x.posExecutive; development.employeePosLevelId = null; development.employeePosTypeId = null; development.developmentId = id; @@ -2988,38 +2988,27 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = true; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentHistory.", - // }); await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }) .catch(async (x) => { let _null: any = null; - development.prefix = item["คำนำหน้า"] == undefined ? null : item["คำนำหน้า"]; - development.firstName = item["ชื่อ"] == undefined ? null : item["ชื่อ"]; - development.lastName = item["นามสกุล"] == undefined ? null : item["นามสกุล"]; - development.position = item["ตำแหน่ง"] == undefined ? null : item["ตำแหน่ง"]; - development.org = item["สังกัด"] == undefined ? null : item["สังกัด"]; - development.dateStart = - item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; - development.dateEnd = - item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; - development.citizenId = - item["รหัสประจำตัวประชาชน"] == undefined ? _null : item["รหัสประจำตัวประชาชน"]; - development.type = "OFFICER" == undefined ? _null : "OFFICER"; + development.prefix = item["คำนำหน้า"] == null ? null : item["คำนำหน้า"].toString(); + development.firstName = item["ชื่อ"] == null ? null : item["ชื่อ"].toString(); + development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString(); + development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString(); + development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString(); + development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; + development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; + development.citizenId = citizenId; + development.type = "OFFICER" == null ? _null : "OFFICER"; development.order = - item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null ? null - : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; - development.dateOrder = - item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined - ? _null - : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); + development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.trainingDays = - item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); development.posLevelId = x.posLevelId; development.posTypeId = x.posTypeId; development.employeePosLevelId = null; @@ -3032,33 +3021,24 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentHistory.", - // }); await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }); - } else if (item["ประเภท"] == "ลูกจ้างประจำ") { + } + else if (item["ประเภท"] == "ลูกจ้างประจำ") { await new CallAPI() - .GetData(request, `/org/unauthorize/employee/citizen/${item["รหัสประจำตัวประชาชน"]}`) + .GetData(request, `/org/unauthorize/employee/citizen/${citizenId}`) .then(async (x: any) => { development = Object.assign(development, x); - development.dateStart = - item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; - development.dateEnd = - item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; + development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; + development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; development.order = - item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null ? null - : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; - development.dateOrder = - item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined - ? null - : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); + development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.trainingDays = - item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); development.posLevelId = null; development.posTypeId = null; development.employeePosLevelId = x.posLevelId; @@ -3071,38 +3051,27 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = true; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentHistory.", - // }); await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }) .catch(async (x) => { let _null: any = null; - development.prefix = item["คำนำหน้า"] == undefined ? null : item["คำนำหน้า"]; - development.firstName = item["ชื่อ"] == undefined ? null : item["ชื่อ"]; - development.lastName = item["นามสกุล"] == undefined ? null : item["นามสกุล"]; - development.position = item["ตำแหน่ง"] == undefined ? null : item["ตำแหน่ง"]; - development.org = item["สังกัด"] == undefined ? null : item["สังกัด"]; - development.dateStart = - item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; - development.dateEnd = - item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; - development.citizenId = - item["รหัสประจำตัวประชาชน"] == undefined ? _null : item["รหัสประจำตัวประชาชน"]; - development.type = "EMPLOYEE" == undefined ? _null : "EMPLOYEE"; + development.prefix = item["คำนำหน้า"] == null ? null : item["คำนำหน้า"].toString(); + development.firstName = item["ชื่อ"] == null ? null : item["ชื่อ"].toString(); + development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString(); + development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString(); + development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString(); + development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; + development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; + development.citizenId = citizenId; + development.type = "EMPLOYEE" == null ? _null : "EMPLOYEE"; development.order = - item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null ? null - : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; - development.dateOrder = - item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined - ? _null - : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); + development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.trainingDays = - item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); development.posLevelId = x.posLevelId; development.posTypeId = x.posTypeId; development.employeePosLevelId = null; @@ -3115,38 +3084,29 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentHistory.", - // }); await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); }); - } else { + } + else { let development = new DevelopmentHistory(); let _null: any = null; - development.prefix = item["คำนำหน้า"] == undefined ? null : item["คำนำหน้า"]; - development.firstName = item["ชื่อ"] == undefined ? null : item["ชื่อ"]; - development.lastName = item["นามสกุล"] == undefined ? null : item["นามสกุล"]; - development.position = item["ตำแหน่ง"] == undefined ? null : item["ตำแหน่ง"]; - development.org = item["สังกัด"] == undefined ? null : item["สังกัด"]; - development.dateStart = - item["วันที่เริ่มต้น"] == undefined ? null : item["วันที่เริ่มต้น"]; - development.dateEnd = item["วันที่สิ้นสุด"] == undefined ? null : item["วันที่สิ้นสุด"]; - development.citizenId = - item["รหัสประจำตัวประชาชน"] == undefined ? _null : item["รหัสประจำตัวประชาชน"]; + development.prefix = item["คำนำหน้า"] == null ? null : item["คำนำหน้า"].toString(); + development.firstName = item["ชื่อ"] == null ? null : item["ชื่อ"].toString(); + development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString(); + development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString(); + development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString(); + development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; + development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; + development.citizenId = citizenId; development.type = "OTHER"; development.order = - item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == undefined + item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null ? null - : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"]; - development.dateOrder = - item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"] == undefined - ? _null - : new Date(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]); + : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); + development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.trainingDays = - item["จำนวนวันที่อบรม"] == undefined ? null : item["จำนวนวันที่อบรม"]; + item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"] .toString(); development.posLevelId = null; development.posTypeId = null; development.employeePosLevelId = null; @@ -3159,11 +3119,6 @@ export class DevelopmentController extends Controller { development.createdAt = new Date(); development.lastUpdatedAt = new Date(); development.isProfile = false; - // addLogSequence(request, { - // action: "database", - // status: "success", - // description: "Store DevelopmentHistory.", - // }); await this.developmentHistoryRepository.save(development, { data: request }); setLogDataDiff(request, { before, after: development }); } @@ -3207,11 +3162,11 @@ export class DevelopmentController extends Controller { if (oldProfile != null) { if (oldProfile.isDone == true) throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, "ข้อมูลนี้ได้ถูกบันทึกแล้ว"); - oldProfile.dateStart = requestBody.dateStart == undefined ? _null : requestBody.dateStart; - oldProfile.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; - oldProfile.order = requestBody.commandNumber == undefined ? _null : requestBody.commandNumber; - oldProfile.dateOrder = requestBody.commandDate == undefined ? _null : new Date(requestBody.commandDate); - oldProfile.trainingDays = requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + oldProfile.dateStart = requestBody.dateStart == null ? _null : requestBody.dateStart; + oldProfile.dateEnd = requestBody.dateEnd == null ? _null : requestBody.dateEnd; + oldProfile.order = requestBody.commandNumber == null ? _null : requestBody.commandNumber; + oldProfile.dateOrder = requestBody.commandDate == null ? _null : new Date(requestBody.commandDate); + oldProfile.trainingDays = requestBody.trainingDays == null ? _null : requestBody.trainingDays; oldProfile.createdUserId = request.user.sub; oldProfile.createdFullName = request.user.name; oldProfile.lastUpdateUserId = request.user.sub; @@ -3234,16 +3189,16 @@ export class DevelopmentController extends Controller { .then(async (x: any) => { let development = Object.assign(new DevelopmentHistory(), x); development.dateStart = - requestBody.dateStart == undefined ? _null : requestBody.dateStart; - development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + requestBody.dateStart == null ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == null ? _null : requestBody.dateEnd; development.order = - requestBody.commandNumber == undefined ? _null : requestBody.commandNumber; + requestBody.commandNumber == null ? _null : requestBody.commandNumber; development.dateOrder = - requestBody.commandDate == undefined ? _null : requestBody.commandDate; + requestBody.commandDate == null ? _null : requestBody.commandDate; development.trainingDays = - requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; - development.posLevelId = x.posLevelId == undefined ? _null : x.posLevelId; - development.posTypeId = x.posTypeId == undefined ? _null : x.posTypeId; + requestBody.trainingDays == null ? _null : requestBody.trainingDays; + development.posLevelId = x.posLevelId == null ? _null : x.posLevelId; + development.posTypeId = x.posTypeId == null ? _null : x.posTypeId; development.employeePosLevelId = null; development.employeePosTypeId = null; development.developmentId = id; @@ -3266,26 +3221,26 @@ export class DevelopmentController extends Controller { .catch(async (x) => { let development = new DevelopmentHistory(); let _null: any = null; - development.prefix = requestBody.prefix == undefined ? _null : requestBody.prefix; + development.prefix = requestBody.prefix == null ? _null : requestBody.prefix; development.firstName = - requestBody.firstName == undefined ? _null : requestBody.firstName; - development.lastName = requestBody.lastName == undefined ? _null : requestBody.lastName; - development.position = requestBody.position == undefined ? _null : requestBody.position; - development.org = requestBody.org == undefined ? _null : requestBody.org; + requestBody.firstName == null ? _null : requestBody.firstName; + development.lastName = requestBody.lastName == null ? _null : requestBody.lastName; + development.position = requestBody.position == null ? _null : requestBody.position; + development.org = requestBody.org == null ? _null : requestBody.org; development.dateStart = - requestBody.dateStart == undefined ? _null : requestBody.dateStart; - development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + requestBody.dateStart == null ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == null ? _null : requestBody.dateEnd; development.citizenId = - requestBody.citizenId == undefined ? _null : requestBody.citizenId; - development.type = requestBody.type == undefined ? _null : requestBody.type; + requestBody.citizenId == null ? _null : requestBody.citizenId; + development.type = requestBody.type == null ? _null : requestBody.type; development.order = - requestBody.commandNumber == undefined ? _null : requestBody.commandNumber; + requestBody.commandNumber == null ? _null : requestBody.commandNumber; development.dateOrder = - requestBody.commandDate == undefined ? _null : requestBody.commandDate; + requestBody.commandDate == null ? _null : requestBody.commandDate; development.trainingDays = - requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; - development.posLevelId = x.posLevelId == undefined ? _null : x.posLevelId; - development.posTypeId = x.posTypeId == undefined ? _null : x.posTypeId; + requestBody.trainingDays == null ? _null : requestBody.trainingDays; + development.posLevelId = x.posLevelId == null ? _null : x.posLevelId; + development.posTypeId = x.posTypeId == null ? _null : x.posTypeId; development.employeePosLevelId = null; development.employeePosTypeId = null; development.developmentId = id; @@ -3311,14 +3266,14 @@ export class DevelopmentController extends Controller { .then(async (x: any) => { let development = Object.assign(new DevelopmentHistory(), x); development.dateStart = - requestBody.dateStart == undefined ? _null : requestBody.dateStart; - development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + requestBody.dateStart == null ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == null ? _null : requestBody.dateEnd; development.order = - requestBody.commandNumber == undefined ? _null : requestBody.commandNumber; + requestBody.commandNumber == null ? _null : requestBody.commandNumber; development.dateOrder = - requestBody.commandDate == undefined ? _null : requestBody.commandDate; + requestBody.commandDate == null ? _null : requestBody.commandDate; development.trainingDays = - requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + requestBody.trainingDays == null ? _null : requestBody.trainingDays; development.posLevelId = null; development.posTypeId = null; development.employeePosLevelId = x.posLevelId; @@ -3343,24 +3298,24 @@ export class DevelopmentController extends Controller { .catch(async (x) => { let development = new DevelopmentHistory(); let _null: any = null; - development.prefix = requestBody.prefix == undefined ? _null : requestBody.prefix; + development.prefix = requestBody.prefix == null ? _null : requestBody.prefix; development.firstName = - requestBody.firstName == undefined ? _null : requestBody.firstName; - development.lastName = requestBody.lastName == undefined ? _null : requestBody.lastName; - development.position = requestBody.position == undefined ? _null : requestBody.position; - development.org = requestBody.org == undefined ? _null : requestBody.org; + requestBody.firstName == null ? _null : requestBody.firstName; + development.lastName = requestBody.lastName == null ? _null : requestBody.lastName; + development.position = requestBody.position == null ? _null : requestBody.position; + development.org = requestBody.org == null ? _null : requestBody.org; development.dateStart = - requestBody.dateStart == undefined ? _null : requestBody.dateStart; - development.dateEnd = requestBody.dateEnd == undefined ? _null : requestBody.dateEnd; + requestBody.dateStart == null ? _null : requestBody.dateStart; + development.dateEnd = requestBody.dateEnd == null ? _null : requestBody.dateEnd; development.citizenId = - requestBody.citizenId == undefined ? _null : requestBody.citizenId; - development.type = requestBody.type == undefined ? _null : requestBody.type; + requestBody.citizenId == null ? _null : requestBody.citizenId; + development.type = requestBody.type == null ? _null : requestBody.type; development.order = - requestBody.commandNumber == undefined ? _null : requestBody.commandNumber; + requestBody.commandNumber == null ? _null : requestBody.commandNumber; development.dateOrder = - requestBody.commandDate == undefined ? _null : requestBody.commandDate; + requestBody.commandDate == null ? _null : requestBody.commandDate; development.trainingDays = - requestBody.trainingDays == undefined ? _null : requestBody.trainingDays; + requestBody.trainingDays == null ? _null : requestBody.trainingDays; development.posLevelId = x.posLevelId; development.posTypeId = x.posTypeId; development.employeePosLevelId = null; diff --git a/src/interfaces/extension.ts b/src/interfaces/extension.ts index f8a28d1..998159c 100644 --- a/src/interfaces/extension.ts +++ b/src/interfaces/extension.ts @@ -1,4 +1,46 @@ class Extension { + public static checkDateTime(value: any, format: "dd/MM/yyyy" | "yyyy-MM-dd"): Date | null { + if (value == null) return null; + + let dateStr = String(value).trim(); + if (!dateStr) return null; + + const parts = dateStr.replace(/-/g, "/").split("/"); + if (parts.length !== 3) return null; + + let year = 0, month = 0, day = 0; + + switch (format) { + case "dd/MM/yyyy": + year = Number(parts[2]); + month = Number(parts[1]); + day = Number(parts[0]); + break; + + case "yyyy-MM-dd": + year = Number(parts[0]); + month = Number(parts[1]); + day = Number(parts[2]); + break; + } + + if (isNaN(year) || isNaN(month) || isNaN(day)) return null; + + // พ.ศ. → ค.ศ. + if (year > 2500) year -= 543; + + // clamp month + if (month < 1 || month > 12) month = 1; + + // clamp day + const maxDay = new Date(year, month, 0).getDate(); + if (day < 1) day = 1; + else if (day > maxDay) day = maxDay; + + const date = new Date(year, month - 1, day); + return isNaN(date.getTime()) ? null : date; + } + public static ToThaiMonth(value: number) { switch (value) { case 1: