This commit is contained in:
AdisakKanthawilang 2025-08-21 11:44:04 +07:00
parent 2629ae87a3
commit 66f81707d4

View file

@ -3689,32 +3689,56 @@ export class PositionController extends Controller {
*/
@Post("dna")
async dna(
@Body() requestBody: { draftPositionId: string; publishPositionId: string },
@Body() requestBody: {
draftRevisionId?: string | null; //ใช้เฉพาะเคสสืบทอดจากโครงสร้างปัจจุบัน
draftPositionId: string; //ในเคสสืบทอดจากโครงสร้างปัจจุบันจะ "ตำแหน่งที่แบบร่าง" จะเป็น "ตำแหน่งปัจจุบัน" ใช้ draftRevisionId เพื่อเช็คว่าเป็นโครงสร้างปัจจุบันไหม
publishRevisionId?: string | null; //ใช้เฉพาะเคสสืบทอดจากโครงสร้างปัจจุบัน
publishPositionId: string //ในเคสสืบทอดจากโครงสร้างปัจจุบันจะ "ตำแหน่งปัจจุบัน" จะเป็น "ตำแหน่งที่ต้องการจะสืบทอด" ตาม publishRevisionId ที่ส่งมา
},
@Request() request: RequestWithUser,
) {
await new permission().PermissionUpdate(request, "SYS_ORG");
let whereConditionRevision: any = {};
// ถ้ามี draftRevisionId ค่อยเพิ่มเข้าไป
if (requestBody.draftRevisionId) {
whereConditionRevision.id = requestBody.draftRevisionId;
} else {
whereConditionRevision.orgRevisionIsDraft = true;
}
const findDraft = await this.orgRevisionRepository.findOne({
where: {
orgRevisionIsDraft: true,
},
where: whereConditionRevision,
});
if (!findDraft) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้างที่เผยแพร่");
}
const dataPublish = await this.posMasterRepository.findOne({
where: {
id: requestBody.publishPositionId,
},
let whereConditionPub: any = {};
// ถ้ามี publishPositionId ค่อยเพิ่มเข้าไป ***อันนี้อาจไม่ต้องทำเพราะใช้ publishPositionId where ได้โดยตรง (!!รอดูหน้าบ้าน!!)***
if (requestBody.publishRevisionId) {
whereConditionPub.id = requestBody.publishPositionId;
whereConditionPub.orgRevisionId = requestBody.publishRevisionId
} else {
whereConditionPub.id = requestBody.publishPositionId;
}
const dataPublish = await this.posMasterRepository.findOne({ //เคสโครงสร้างปัจจุบัน: ตัวที่ต้องการจะสืบทอด
where: whereConditionPub,
});
if (!dataPublish) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้");
}
const dataDraft = await this.posMasterRepository.findOne({
where: {
id: requestBody.draftPositionId,
},
let whereConditionDraft: any = {};
// ถ้ามี publishPositionId ค่อยเพิ่มเข้าไป ***อันนี้อาจไม่ต้องทำเพราะใช้ draftPositionId where ได้โดยตรง (!!รอดูหน้าบ้าน!!)***
if (requestBody.draftRevisionId) {
whereConditionDraft.id = requestBody.draftPositionId;
whereConditionDraft.orgRevisionId = requestBody.draftRevisionId
} else {
whereConditionDraft.id = requestBody.draftPositionId;
}
const dataDraft = await this.posMasterRepository.findOne({ //เคสโครงสร้างปัจจุบัน: ตัวปัจจุบัน
where: whereConditionDraft,
});
if (!dataDraft) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้");