Merge branch 'develop-Bright' into develop

This commit is contained in:
harid 2026-01-30 15:42:55 +07:00
commit 2923fdab79
2 changed files with 150 additions and 153 deletions

View file

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

View file

@ -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: