fix ออกคำสั่งบรรจุแต่งตั้ง ขรก.เดิมหรือขรก.สถานะพ้นราชการไม่อัพเดพสถานะทดลองงาน
This commit is contained in:
parent
87a91b035c
commit
618ccb5cff
1 changed files with 115 additions and 71 deletions
|
|
@ -61,6 +61,7 @@ import {
|
||||||
enableStatus,
|
enableStatus,
|
||||||
getUserByUsername,
|
getUserByUsername,
|
||||||
getRoleMappings,
|
getRoleMappings,
|
||||||
|
removeUserRoles
|
||||||
} from "../keycloak";
|
} from "../keycloak";
|
||||||
import { ProfileEducation, CreateProfileEducation } from "../entities/ProfileEducation";
|
import { ProfileEducation, CreateProfileEducation } from "../entities/ProfileEducation";
|
||||||
import { ProfileEducationHistory } from "../entities/ProfileEducationHistory";
|
import { ProfileEducationHistory } from "../entities/ProfileEducationHistory";
|
||||||
|
|
@ -4214,6 +4215,9 @@ export class CommandController extends Controller {
|
||||||
const roleKeycloak = await this.roleKeycloakRepo.findOne({
|
const roleKeycloak = await this.roleKeycloakRepo.findOne({
|
||||||
where: { name: Like("USER") },
|
where: { name: Like("USER") },
|
||||||
});
|
});
|
||||||
|
const list = await getRoles();
|
||||||
|
if (!Array.isArray(list))
|
||||||
|
throw new Error("Failed. Cannot get role(s) data from the server.");
|
||||||
const _null: any = null;
|
const _null: any = null;
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
body.data.map(async (item) => {
|
body.data.map(async (item) => {
|
||||||
|
|
@ -4242,85 +4246,90 @@ export class CommandController extends Controller {
|
||||||
) {
|
) {
|
||||||
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้");
|
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let registrationProvinceId = await this.provinceRepo.findOneBy({
|
||||||
|
id: item.bodyProfile.registrationProvinceId ?? "",
|
||||||
|
});
|
||||||
|
let registrationDistrictId = await this.districtRepo.findOneBy({
|
||||||
|
id: item.bodyProfile.registrationDistrictId ?? "",
|
||||||
|
});
|
||||||
|
let registrationSubDistrictId = await this.subDistrictRepo.findOneBy({
|
||||||
|
id: item.bodyProfile.registrationSubDistrictId ?? "",
|
||||||
|
});
|
||||||
|
let currentProvinceId = await this.provinceRepo.findOneBy({
|
||||||
|
id: item.bodyProfile.currentProvinceId ?? "",
|
||||||
|
});
|
||||||
|
let currentDistrictId = await this.districtRepo.findOneBy({
|
||||||
|
id: item.bodyProfile.currentDistrictId ?? "",
|
||||||
|
});
|
||||||
|
let currentSubDistrictId = await this.subDistrictRepo.findOneBy({
|
||||||
|
id: item.bodyProfile.currentSubDistrictId ?? "",
|
||||||
|
});
|
||||||
|
|
||||||
|
let _dateRetire = item.bodyProfile.birthDate == null
|
||||||
|
? _null
|
||||||
|
: calculateRetireDate(item.bodyProfile.birthDate);
|
||||||
|
let _dateRetireLaw = item.bodyProfile.birthDate == null
|
||||||
|
? _null
|
||||||
|
: calculateRetireLaw(item.bodyProfile.birthDate);
|
||||||
|
|
||||||
|
let userKeycloakId:any
|
||||||
|
let result:any
|
||||||
|
const checkUser = await getUserByUsername(item.bodyProfile.citizenId);
|
||||||
|
if (checkUser.length == 0) {
|
||||||
|
userKeycloakId = await createUser(item.bodyProfile.citizenId, item.bodyProfile.citizenId, {
|
||||||
|
firstName: item.bodyProfile.firstName,
|
||||||
|
lastName: item.bodyProfile.lastName,
|
||||||
|
});
|
||||||
|
result = await addUserRoles(
|
||||||
|
userKeycloakId,
|
||||||
|
list
|
||||||
|
.filter((v) => v.name === "USER")
|
||||||
|
.map((x) => ({
|
||||||
|
id: x.id,
|
||||||
|
name: x.name,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
userKeycloakId = checkUser[0].id;
|
||||||
|
const rolesData = await getRoleMappings(userKeycloakId);
|
||||||
|
if (rolesData) {
|
||||||
|
const _delRole = rolesData.map((x:any) => ({
|
||||||
|
id : x.id,
|
||||||
|
name: x.name
|
||||||
|
}));
|
||||||
|
await removeUserRoles(
|
||||||
|
userKeycloakId,
|
||||||
|
_delRole
|
||||||
|
);
|
||||||
|
}
|
||||||
|
result = await addUserRoles(
|
||||||
|
userKeycloakId,
|
||||||
|
list
|
||||||
|
.filter((v) => v.name === "USER")
|
||||||
|
.map((x) => ({
|
||||||
|
id: x.id,
|
||||||
|
name: x.name,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let profile: any = await this.profileRepository.findOne({
|
let profile: any = await this.profileRepository.findOne({
|
||||||
where: { citizenId: item.bodyProfile.citizenId, isActive: true },
|
where: { citizenId: item.bodyProfile.citizenId/*, isActive: true */},
|
||||||
relations: ["roleKeycloaks"],
|
relations: ["roleKeycloaks"],
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
profile = Object.assign({ ...item.bodyProfile, ...meta });
|
profile = Object.assign({ ...item.bodyProfile, ...meta });
|
||||||
profile.dateRetire =
|
profile.dateRetire = _dateRetire;
|
||||||
item.bodyProfile.birthDate == null
|
profile.dateRetireLaw = _dateRetireLaw
|
||||||
? _null
|
profile.roleKeycloaks = result && roleKeycloak ? [roleKeycloak] : [];
|
||||||
: calculateRetireDate(item.bodyProfile.birthDate);
|
profile.keycloak = userKeycloakId && typeof userKeycloakId === "string" ? userKeycloakId : ""
|
||||||
profile.dateRetireLaw =
|
profile.registrationProvinceId = registrationProvinceId ? registrationProvinceId.id : _null;
|
||||||
item.bodyProfile.birthDate == null
|
profile.registrationDistrictId = registrationDistrictId ? registrationDistrictId.id : _null;
|
||||||
? _null
|
profile.registrationSubDistrictId = registrationSubDistrictId ? registrationSubDistrictId.id : _null;
|
||||||
: calculateRetireLaw(item.bodyProfile.birthDate);
|
|
||||||
|
|
||||||
const checkUser = await getUserByUsername(profile.citizenId);
|
|
||||||
if (checkUser.length == 0) {
|
|
||||||
const userKeycloakId = await createUser(profile.citizenId, profile.citizenId, {
|
|
||||||
firstName: profile.firstName,
|
|
||||||
lastName: profile.lastName,
|
|
||||||
});
|
|
||||||
const list = await getRoles();
|
|
||||||
if (!Array.isArray(list))
|
|
||||||
throw new Error("Failed. Cannot get role(s) data from the server.");
|
|
||||||
const result = await addUserRoles(
|
|
||||||
userKeycloakId,
|
|
||||||
list
|
|
||||||
.filter((v) => v.name === "USER")
|
|
||||||
.map((x) => ({
|
|
||||||
id: x.id,
|
|
||||||
name: x.name,
|
|
||||||
})),
|
|
||||||
);
|
|
||||||
profile.roleKeycloaks = result && roleKeycloak ? [roleKeycloak] : [];
|
|
||||||
profile.keycloak =
|
|
||||||
userKeycloakId && typeof userKeycloakId === "string" ? userKeycloakId : "";
|
|
||||||
} else {
|
|
||||||
const rolesData = await getRoleMappings(checkUser[0].id);
|
|
||||||
if (rolesData) {
|
|
||||||
const _roleKeycloak = await this.roleKeycloakRepo.find({
|
|
||||||
where: { name: In(rolesData.map((x: any) => x.name)) },
|
|
||||||
});
|
|
||||||
profile.roleKeycloaks =
|
|
||||||
_roleKeycloak && _roleKeycloak.length > 0 ? _roleKeycloak : [];
|
|
||||||
}
|
|
||||||
profile.keycloak = checkUser[0].id;
|
|
||||||
}
|
|
||||||
|
|
||||||
let registrationProvinceId = await this.provinceRepo.findOneBy({
|
|
||||||
id: profile.registrationProvinceId,
|
|
||||||
});
|
|
||||||
profile.registrationProvinceId = registrationProvinceId
|
|
||||||
? registrationProvinceId.id
|
|
||||||
: _null;
|
|
||||||
let registrationDistrictId = await this.districtRepo.findOneBy({
|
|
||||||
id: profile.registrationDistrictId,
|
|
||||||
});
|
|
||||||
profile.registrationDistrictId = registrationDistrictId
|
|
||||||
? registrationDistrictId.id
|
|
||||||
: _null;
|
|
||||||
let registrationSubDistrictId = await this.subDistrictRepo.findOneBy({
|
|
||||||
id: profile.registrationSubDistrictId,
|
|
||||||
});
|
|
||||||
profile.registrationSubDistrictId = registrationSubDistrictId
|
|
||||||
? registrationSubDistrictId.id
|
|
||||||
: _null;
|
|
||||||
|
|
||||||
let currentProvinceId = await this.provinceRepo.findOneBy({
|
|
||||||
id: profile.currentProvinceId,
|
|
||||||
});
|
|
||||||
profile.currentProvinceId = currentProvinceId ? currentProvinceId.id : _null;
|
profile.currentProvinceId = currentProvinceId ? currentProvinceId.id : _null;
|
||||||
let currentDistrictId = await this.districtRepo.findOneBy({
|
|
||||||
id: profile.currentDistrictId,
|
|
||||||
});
|
|
||||||
profile.currentDistrictId = currentDistrictId ? currentDistrictId.id : _null;
|
profile.currentDistrictId = currentDistrictId ? currentDistrictId.id : _null;
|
||||||
let currentSubDistrictId = await this.subDistrictRepo.findOneBy({
|
|
||||||
id: profile.currentSubDistrictId,
|
|
||||||
});
|
|
||||||
profile.currentSubDistrictId = currentSubDistrictId ? currentSubDistrictId.id : _null;
|
profile.currentSubDistrictId = currentSubDistrictId ? currentSubDistrictId.id : _null;
|
||||||
profile.email = item.bodyProfile.email;
|
profile.email = item.bodyProfile.email;
|
||||||
profile.dateStart = item.bodyProfile.dateStart;
|
profile.dateStart = item.bodyProfile.dateStart;
|
||||||
|
|
@ -4330,6 +4339,41 @@ export class CommandController extends Controller {
|
||||||
await this.profileRepository.save(profile);
|
await this.profileRepository.save(profile);
|
||||||
setLogDataDiff(req, { before, after: profile });
|
setLogDataDiff(req, { before, after: profile });
|
||||||
}
|
}
|
||||||
|
//ขรก.ในระบบ หรือ ขรก.ในระบบที่สถานะพ้นจากราชการ
|
||||||
|
else {
|
||||||
|
console.log("have keycloak..............")
|
||||||
|
profile.roleKeycloaks = result && roleKeycloak ? [roleKeycloak] : [];
|
||||||
|
profile.keycloak = userKeycloakId && typeof userKeycloakId === "string" ? userKeycloakId : "";
|
||||||
|
profile.isProbation = item.bodyProfile.isProbation;
|
||||||
|
profile.isLeave = item.bodyProfile.isLeave;
|
||||||
|
profile.isRetirement = false;
|
||||||
|
profile.isActive = true;
|
||||||
|
profile.dateLeave = _null;
|
||||||
|
profile.dateRetire = _dateRetire;
|
||||||
|
profile.dateRetireLaw = _dateRetireLaw
|
||||||
|
profile.registrationProvinceId = registrationProvinceId ? registrationProvinceId.id : _null;
|
||||||
|
profile.registrationDistrictId = registrationDistrictId ? registrationDistrictId.id : _null;
|
||||||
|
profile.registrationSubDistrictId = registrationSubDistrictId ? registrationSubDistrictId.id : _null;
|
||||||
|
profile.currentProvinceId = currentProvinceId ? currentProvinceId.id : _null;
|
||||||
|
profile.currentDistrictId = currentDistrictId ? currentDistrictId.id : _null;
|
||||||
|
profile.currentSubDistrictId = currentSubDistrictId ? currentSubDistrictId.id : _null;
|
||||||
|
profile.email = item.bodyProfile.email;
|
||||||
|
profile.dateStart = item.bodyProfile.dateStart;
|
||||||
|
profile.amount = item.bodyProfile.amount ?? null;
|
||||||
|
profile.amountSpecial = item.bodyProfile.amountSpecial ?? null;
|
||||||
|
profile.leaveCommandId = _null;
|
||||||
|
profile.leaveCommandNo = _null;
|
||||||
|
profile.leaveRemark = _null;
|
||||||
|
profile.leaveDate = _null;
|
||||||
|
profile.leaveType = _null;
|
||||||
|
profile.lastUpdateUserId = req.user.sub;
|
||||||
|
profile.lastUpdateFullName = req.user.name;
|
||||||
|
profile.lastUpdatedAt = new Date();
|
||||||
|
profile.refCommandDate = new Date();
|
||||||
|
await this.profileRepository.save(profile);
|
||||||
|
setLogDataDiff(req, { before, after: profile });
|
||||||
|
}
|
||||||
|
|
||||||
if (profile && profile.id) {
|
if (profile && profile.id) {
|
||||||
//Educations
|
//Educations
|
||||||
if (item.bodyEducations && item.bodyEducations.length > 0) {
|
if (item.bodyEducations && item.bodyEducations.length > 0) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue