Merge branch 'develop-Bright' into develop

This commit is contained in:
harid 2026-01-30 16:54:19 +07:00
commit 75e47f7773
2 changed files with 55 additions and 33 deletions

View file

@ -2966,13 +2966,13 @@ export class DevelopmentController extends Controller {
.GetData(request, `/org/unauthorize/officer/citizen/${citizenId}`) .GetData(request, `/org/unauthorize/officer/citizen/${citizenId}`)
.then(async (x: any) => { .then(async (x: any) => {
development = Object.assign(development, x); development = Object.assign(development, x);
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy")as Date; development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"])as Date;
development.order = development.order =
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
? null ? null
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy")as Date; development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"])as Date;
development.trainingDays = development.trainingDays =
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
development.posLevelId = x.posLevelId; development.posLevelId = x.posLevelId;
@ -2998,15 +2998,15 @@ export class DevelopmentController extends Controller {
development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString(); development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString();
development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString(); development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString();
development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString(); development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString();
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
development.citizenId = citizenId; development.citizenId = citizenId;
development.type = "OFFICER" == null ? _null : "OFFICER"; development.type = "OFFICER" == null ? _null : "OFFICER";
development.order = development.order =
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
? null ? null
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
development.trainingDays = development.trainingDays =
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
development.posLevelId = x.posLevelId; development.posLevelId = x.posLevelId;
@ -3030,13 +3030,13 @@ export class DevelopmentController extends Controller {
.GetData(request, `/org/unauthorize/employee/citizen/${citizenId}`) .GetData(request, `/org/unauthorize/employee/citizen/${citizenId}`)
.then(async (x: any) => { .then(async (x: any) => {
development = Object.assign(development, x); development = Object.assign(development, x);
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
development.order = development.order =
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
? null ? null
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
development.trainingDays = development.trainingDays =
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
development.posLevelId = null; development.posLevelId = null;
@ -3061,15 +3061,15 @@ export class DevelopmentController extends Controller {
development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString(); development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString();
development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString(); development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString();
development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString(); development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString();
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
development.citizenId = citizenId; development.citizenId = citizenId;
development.type = "EMPLOYEE" == null ? _null : "EMPLOYEE"; development.type = "EMPLOYEE" == null ? _null : "EMPLOYEE";
development.order = development.order =
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
? null ? null
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
development.trainingDays = development.trainingDays =
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString(); item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
development.posLevelId = x.posLevelId; development.posLevelId = x.posLevelId;
@ -3096,15 +3096,15 @@ export class DevelopmentController extends Controller {
development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString(); development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString();
development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString(); development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString();
development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString(); development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString();
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date; development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date; development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
development.citizenId = citizenId; development.citizenId = citizenId;
development.type = "OTHER"; development.type = "OTHER";
development.order = development.order =
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
? null ? null
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString(); : item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date; development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
development.trainingDays = development.trainingDays =
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"] .toString(); item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"] .toString();
development.posLevelId = null; development.posLevelId = null;

View file

@ -1,38 +1,60 @@
class Extension { class Extension {
public static checkDateTime(value: any, format: "dd/MM/yyyy" | "yyyy-MM-dd"): Date | null { public static checkDateTime(
if (value == null) return null; value: any,
format?: "dd/MM/yyyy" | "yyyy-MM-dd",
): Date | null {
if (value == null || value === "") return null;
let dateStr = String(value).trim(); // ===== Excel serial number =====
if (!dateStr) return null; if (typeof value === "number") {
if (value < 1) return null;
return new Date(Math.round((value - 25569) * 86400 * 1000));
}
const parts = dateStr.replace(/-/g, "/").split("/"); const raw = String(value).trim();
if (!raw) return null;
const parts = raw.replace(/-/g, "/").split("/");
if (parts.length !== 3) return null; if (parts.length !== 3) return null;
let year = 0, month = 0, day = 0; let year = 0, month = 0, day = 0;
switch (format) { // ===== use format if provided =====
case "dd/MM/yyyy": if (format === "dd/MM/yyyy") {
year = Number(parts[2]); day = Number(parts[0]);
month = Number(parts[1]); month = Number(parts[1]);
day = Number(parts[0]); year = Number(parts[2]);
break; } else if (format === "yyyy-MM-dd") {
year = Number(parts[0]);
case "yyyy-MM-dd": month = Number(parts[1]);
day = Number(parts[2]);
}
// ===== auto detect =====
else {
if (parts[0].length === 4) {
// yyyy/MM/dd
year = Number(parts[0]); year = Number(parts[0]);
month = Number(parts[1]); month = Number(parts[1]);
day = Number(parts[2]); day = Number(parts[2]);
break; } else if (parts[2].length === 4) {
// dd/MM/yyyy
day = Number(parts[0]);
month = Number(parts[1]);
year = Number(parts[2]);
} else {
return null;
}
} }
if (isNaN(year) || isNaN(month) || isNaN(day)) return null; if ([year, month, day].some(Number.isNaN)) return null;
// พ.ศ. → ค.ศ. // ===== Buddhist year =====
if (year > 2500) year -= 543; if (year > 2500) year -= 543;
if (year < 1800 || year > 2500) return null;
// clamp month // ===== normalize =====
if (month < 1 || month > 12) month = 1; if (month < 1 || month > 12) month = 1;
// clamp day
const maxDay = new Date(year, month, 0).getDate(); const maxDay = new Date(year, month, 0).getDate();
if (day < 1) day = 1; if (day < 1) day = 1;
else if (day > maxDay) day = maxDay; else if (day > maxDay) day = maxDay;