Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2024-05-16 15:24:08 +07:00
commit a39c33ae0d
21 changed files with 218 additions and 986 deletions

View file

@ -277,7 +277,7 @@ export class OrganizationUnauthorizeController extends Controller {
.leftJoinAndSelect("employeePosMaster.orgChild3", "orgChild3") .leftJoinAndSelect("employeePosMaster.orgChild3", "orgChild3")
.leftJoinAndSelect("employeePosMaster.orgChild4", "orgChild4") .leftJoinAndSelect("employeePosMaster.orgChild4", "orgChild4")
.leftJoinAndSelect("employeePosMaster.positions", "positions") .leftJoinAndSelect("employeePosMaster.positions", "positions")
.leftJoinAndSelect("current_holder.profileSalary", "profileSalary") .leftJoinAndSelect("current_holder.profileSalarys", "profileSalarys")
.leftJoinAndSelect("current_holder.profileDisciplines", "profileDisciplines") .leftJoinAndSelect("current_holder.profileDisciplines", "profileDisciplines")
.leftJoinAndSelect("current_holder.posLevel", "posLevel") .leftJoinAndSelect("current_holder.posLevel", "posLevel")
.leftJoinAndSelect("current_holder.posType", "posType") .leftJoinAndSelect("current_holder.posType", "posType")
@ -370,9 +370,9 @@ export class OrganizationUnauthorizeController extends Controller {
} }
const amount = const amount =
item.current_holder == null || item.current_holder.profileSalary.length == 0 item.current_holder == null || item.current_holder.profileSalarys.length == 0
? null ? null
: item.current_holder.profileSalary.sort((a: any, b: any) => b.date - a.date)[0].amount; : item.current_holder.profileSalarys.sort((a: any, b: any) => b.date - a.date)[0].amount;
let datePeriodStart = new Date( let datePeriodStart = new Date(
`${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, "0")}-${String(new Date().getDate() + 1).padStart(2, "0")}T00:00:00.000Z`, `${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, "0")}-${String(new Date().getDate() + 1).padStart(2, "0")}T00:00:00.000Z`,
); );

View file

@ -44,6 +44,8 @@ export class ProfileAvatarController extends Controller {
result.isActive = true; result.isActive = true;
profile.avatar = result.avatar; profile.avatar = result.avatar;
profile.avatarName = result.avatarName; profile.avatarName = result.avatarName;
await this.avatarRepository.save(result);
await this.profileRepository.save(profile);
return new HttpSuccess(); return new HttpSuccess();
} }
@ -51,7 +53,6 @@ export class ProfileAvatarController extends Controller {
public async newAvatar(@Request() req: RequestWithUser, @Body() body: CreateProfileAvatar) { public async newAvatar(@Request() req: RequestWithUser, @Body() body: CreateProfileAvatar) {
const profile = await this.profileRepository.findOne({ const profile = await this.profileRepository.findOne({
where: { id: body.profileId }, where: { id: body.profileId },
relations: ["profileAvatars"],
}); });
if (!profile) { if (!profile) {
@ -69,16 +70,25 @@ export class ProfileAvatarController extends Controller {
Object.assign(data, { ...body, ...meta }); Object.assign(data, { ...body, ...meta });
await this.avatarRepository.save(data); const _profile = await this.profileRepository.findOne({
let avatar = `ทะเบียนประวัติ/โปรไฟล์/${profile.id}`; where: { id: body.profileId },
let fileName = `profile-${data.id}`; relations: ["profileAvatars"],
});
if (!_profile) {
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
}
await Promise.all( await Promise.all(
profile.profileAvatars.map(async (item: any) => { _profile.profileAvatars.map(async (item: any) => {
item.isActive = false; item.isActive = false;
await this.avatarRepository.save(item); await this.avatarRepository.save(item);
}), }),
); );
await this.avatarRepository.save(data);
let avatar = `ทะเบียนประวัติ/โปรไฟล์/${profile.id}`;
let fileName = `profile-${data.id}`;
data.isActive = true; data.isActive = true;
data.avatar = avatar; data.avatar = avatar;
data.avatarName = fileName; data.avatarName = fileName;

View file

@ -14,20 +14,49 @@ export class ProfileAvatarEmployeeController extends Controller {
private profileRepository = AppDataSource.getRepository(ProfileEmployee); private profileRepository = AppDataSource.getRepository(ProfileEmployee);
private avatarRepository = AppDataSource.getRepository(ProfileAvatar); private avatarRepository = AppDataSource.getRepository(ProfileAvatar);
@Get("{profileId}") @Get("{profileEmployeeId}")
public async getAvatar(@Path() profileId: string) { public async getAvatarEmployee(@Path() profileEmployeeId: string) {
const lists = await this.avatarRepository.find({ const lists = await this.avatarRepository.find({
where: { profileEmployeeId: profileId }, where: { profileEmployeeId },
}); });
return new HttpSuccess(lists); return new HttpSuccess(lists);
} }
@Get("select/{profileEmployeeId}/{id}")
public async selectAvatarEmployee(@Path() profileEmployeeId: string, @Path() id: string) {
const result = await this.avatarRepository.findOneBy({ id: id });
if (!result) {
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
}
const profile = await this.profileRepository.findOne({
where: { id: profileEmployeeId },
relations: ["profileAvatars"],
});
if (!profile) {
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
}
await Promise.all(
profile.profileAvatars.map(async (item: any) => {
item.isActive = false;
await this.avatarRepository.save(item);
}),
);
result.isActive = true;
profile.avatar = result.avatar;
profile.avatarName = result.avatarName;
await this.avatarRepository.save(result);
await this.profileRepository.save(profile);
return new HttpSuccess();
}
@Post() @Post()
public async newAvatar( public async newAvatarEmployee(
@Request() req: RequestWithUser, @Request() req: RequestWithUser,
@Body() body: CreateProfileEmployeeAvatar, @Body() body: CreateProfileEmployeeAvatar,
) { ) {
const profile = await this.profileRepository.findOneBy({ id: body.profileEmployeeId }); const profile = await this.profileRepository.findOne({
where: { id: body.profileEmployeeId },
});
if (!profile) { if (!profile) {
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว"); throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
@ -44,18 +73,38 @@ export class ProfileAvatarEmployeeController extends Controller {
Object.assign(data, { ...body, ...meta }); Object.assign(data, { ...body, ...meta });
const _profile = await this.profileRepository.findOne({
where: { id: body.profileEmployeeId },
relations: ["profileAvatars"],
});
if (!_profile) {
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
}
await Promise.all(
_profile.profileAvatars.map(async (item: any) => {
item.isActive = false;
await this.avatarRepository.save(item);
}),
);
await this.avatarRepository.save(data); await this.avatarRepository.save(data);
let avatar = `ทะเบียนประวัติ/โปรไฟล์/${profile.id}/profile-employee-${data.id}`; let avatar = `ทะเบียนประวัติ/โปรไฟล์/${profile.id}`;
let fileName = `profile-${data.id}`;
data.isActive = true;
data.avatar = avatar; data.avatar = avatar;
data.avatarName = fileName;
await this.avatarRepository.save(data); await this.avatarRepository.save(data);
profile.avatar = avatar; profile.avatar = avatar;
profile.avatarName = fileName;
await this.profileRepository.save(profile); await this.profileRepository.save(profile);
return new HttpSuccess(avatar); return new HttpSuccess({ avatar: avatar, avatarName: fileName });
} }
@Delete("{avatarId}") @Delete("{avatarId}")
public async deleteAvatar(@Path() avatarId: string) { public async deleteAvatarEmployee(@Path() avatarId: string) {
const result = await this.avatarRepository.delete({ id: avatarId }); const result = await this.avatarRepository.delete({ id: avatarId });
if (result.affected == undefined || result.affected <= 0) { if (result.affected == undefined || result.affected <= 0) {

View file

@ -196,7 +196,10 @@ export class ProfileController extends Controller {
} }
if (body.citizenId.length !== 13) { if (body.citizenId.length !== 13) {
throw new HttpError(HttpStatus.NOT_FOUND, "กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก"); throw new HttpError(
HttpStatus.NOT_FOUND,
"กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก",
);
} }
if (body.citizenId) { if (body.citizenId) {
@ -216,16 +219,16 @@ export class ProfileController extends Controller {
citizenIdDigits[11] * 2; citizenIdDigits[11] * 2;
const calStp2 = cal % 11; const calStp2 = cal % 11;
let chkDigit = 11 - calStp2; let chkDigit = 11 - calStp2;
if(chkDigit === 10){ if (chkDigit === 10) {
chkDigit = 1; chkDigit = 1;
}else if(chkDigit === 11){ } else if (chkDigit === 11) {
chkDigit = chkDigit % 10; chkDigit = chkDigit % 10;
} }
// else if(chkDigit === 11){ // else if(chkDigit === 11){
// chkDigit = cal % 10; // chkDigit = cal % 10;
// } // }
if(citizenIdDigits[12] !== chkDigit){ if (citizenIdDigits[12] !== chkDigit) {
throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง"); throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง");
} }
} }
@ -245,7 +248,6 @@ export class ProfileController extends Controller {
profile.dateRetireLaw = calculateRetireLaw(profile.birthDate); profile.dateRetireLaw = calculateRetireLaw(profile.birthDate);
await this.profileRepo.save(profile); await this.profileRepo.save(profile);
return new HttpSuccess(); return new HttpSuccess();
} }
@ -331,9 +333,12 @@ export class ProfileController extends Controller {
if (body.posTypeId && !(await this.posTypeRepo.findOneBy({ id: body.posTypeId }))) { if (body.posTypeId && !(await this.posTypeRepo.findOneBy({ id: body.posTypeId }))) {
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้"); throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้");
} }
if (body.citizenId && body.citizenId.length !== 13) { if (body.citizenId && body.citizenId.length !== 13) {
throw new HttpError(HttpStatus.NOT_FOUND, "กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก"); throw new HttpError(
HttpStatus.NOT_FOUND,
"กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก",
);
} }
if (body.citizenId) { if (body.citizenId) {
@ -353,16 +358,16 @@ export class ProfileController extends Controller {
citizenIdDigits[11] * 2; citizenIdDigits[11] * 2;
const calStp2 = cal % 11; const calStp2 = cal % 11;
let chkDigit = 11 - calStp2; let chkDigit = 11 - calStp2;
if(chkDigit === 10){ if (chkDigit === 10) {
chkDigit = 1; chkDigit = 1;
}else if(chkDigit === 11){ } else if (chkDigit === 11) {
chkDigit = chkDigit % 10; chkDigit = chkDigit % 10;
} }
// else if(chkDigit === 11){ // else if(chkDigit === 11){
// chkDigit = cal % 10; // chkDigit = cal % 10;
// } // }
if(citizenIdDigits[12] !== chkDigit){ if (citizenIdDigits[12] !== chkDigit) {
throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง"); throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง");
} }
} }
@ -652,6 +657,8 @@ export class ProfileController extends Controller {
return { return {
id: _data.id, id: _data.id,
avatar: _data.avatar,
avatarName: _data.avatarName,
prefix: _data.prefix, prefix: _data.prefix,
rank: _data.rank, rank: _data.rank,
firstName: _data.firstName, firstName: _data.firstName,

View file

@ -34,21 +34,6 @@ export class ProfileDisciplineController extends Controller {
private disciplineHistoryRepository = AppDataSource.getRepository(ProfileDisciplineHistory); private disciplineHistoryRepository = AppDataSource.getRepository(ProfileDisciplineHistory);
@Get("{profileId}") @Get("{profileId}")
@Example({
status: 200,
message: "สำเร็จ",
result: [
{
id: "debfa8a7-83fb-4801-a940-8ae74e7638d3",
date: "2024-03-12T10:09:47.000Z",
level: "string",
detail: "string",
unStigma: "string",
refCommandNo: "string",
refCommandDate: "2024-03-12T10:09:47.000Z",
},
],
})
public async getDiscipline(@Path() profileId: string) { public async getDiscipline(@Path() profileId: string) {
const lists = await this.disciplineRepository.find({ const lists = await this.disciplineRepository.find({
where: { profileId: profileId }, where: { profileId: profileId },

View file

@ -73,9 +73,12 @@ export class ProfileEmployeeController extends Controller {
if (body.posTypeId && !(await this.posTypeRepo.findOneBy({ id: body.posTypeId }))) { if (body.posTypeId && !(await this.posTypeRepo.findOneBy({ id: body.posTypeId }))) {
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้"); throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้");
} }
if (body.citizenId.length !== 13) { if (body.citizenId.length !== 13) {
throw new HttpError(HttpStatus.NOT_FOUND, "กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก"); throw new HttpError(
HttpStatus.NOT_FOUND,
"กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก",
);
} }
if (body.citizenId) { if (body.citizenId) {
@ -95,16 +98,16 @@ export class ProfileEmployeeController extends Controller {
citizenIdDigits[11] * 2; citizenIdDigits[11] * 2;
const calStp2 = cal % 11; const calStp2 = cal % 11;
let chkDigit = 11 - calStp2; let chkDigit = 11 - calStp2;
if(chkDigit === 10){ if (chkDigit === 10) {
chkDigit = 1; chkDigit = 1;
}else if(chkDigit === 11){ } else if (chkDigit === 11) {
chkDigit = chkDigit % 10; chkDigit = chkDigit % 10;
} }
// else if(chkDigit === 11){ // else if(chkDigit === 11){
// chkDigit = cal % 10; // chkDigit = cal % 10;
// } // }
if(citizenIdDigits[12] !== chkDigit){ if (citizenIdDigits[12] !== chkDigit) {
throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง"); throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง");
} }
} }
@ -155,7 +158,10 @@ export class ProfileEmployeeController extends Controller {
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้"); throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่งนี้");
} }
if (body.citizenId && body.citizenId.length !== 13) { if (body.citizenId && body.citizenId.length !== 13) {
throw new HttpError(HttpStatus.NOT_FOUND, "กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก"); throw new HttpError(
HttpStatus.NOT_FOUND,
"กรุณากรอกข้อมูลรหัสบัตรประจำตัวประชาชนให้ครบ 13 หลัก",
);
} }
if (body.citizenId) { if (body.citizenId) {
@ -175,16 +181,16 @@ export class ProfileEmployeeController extends Controller {
citizenIdDigits[11] * 2; citizenIdDigits[11] * 2;
const calStp2 = cal % 11; const calStp2 = cal % 11;
let chkDigit = 11 - calStp2; let chkDigit = 11 - calStp2;
if(chkDigit === 10){ if (chkDigit === 10) {
chkDigit = 1; chkDigit = 1;
}else if(chkDigit === 11){ } else if (chkDigit === 11) {
chkDigit = chkDigit % 10; chkDigit = chkDigit % 10;
} }
// else if(chkDigit === 11){ // else if(chkDigit === 11){
// chkDigit = cal % 10; // chkDigit = cal % 10;
// } // }
if(citizenIdDigits[12] !== chkDigit){ if (citizenIdDigits[12] !== chkDigit) {
throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง"); throw new HttpError(HttpStatus.NOT_FOUND, "ข้อมูลรหัสบัตรประจำตัวประชาชนไม่ถูกต้อง");
} }
} }
@ -1047,7 +1053,7 @@ export class ProfileEmployeeController extends Controller {
.leftJoinAndSelect("employeePosMaster.orgChild3", "orgChild3") .leftJoinAndSelect("employeePosMaster.orgChild3", "orgChild3")
.leftJoinAndSelect("employeePosMaster.orgChild4", "orgChild4") .leftJoinAndSelect("employeePosMaster.orgChild4", "orgChild4")
.leftJoinAndSelect("employeePosMaster.positions", "positions") .leftJoinAndSelect("employeePosMaster.positions", "positions")
.leftJoinAndSelect("current_holder.profileSalary", "profileSalary") .leftJoinAndSelect("current_holder.profileSalarys", "profileSalarys")
.leftJoinAndSelect("current_holder.profileDisciplines", "profileDisciplines") .leftJoinAndSelect("current_holder.profileDisciplines", "profileDisciplines")
.leftJoinAndSelect("current_holder.posLevel", "posLevel") .leftJoinAndSelect("current_holder.posLevel", "posLevel")
.leftJoinAndSelect("current_holder.posType", "posType") .leftJoinAndSelect("current_holder.posType", "posType")
@ -1145,9 +1151,9 @@ export class ProfileEmployeeController extends Controller {
} }
const amount = const amount =
item.current_holder == null || item.current_holder.profileSalary.length == 0 item.current_holder == null || item.current_holder.profileSalarys.length == 0
? null ? null
: item.current_holder.profileSalary.sort((a: any, b: any) => b.date - a.date)[0].amount; : item.current_holder.profileSalarys.sort((a: any, b: any) => b.date - a.date)[0].amount;
let datePeriodStart = new Date( let datePeriodStart = new Date(
`${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, "0")}-${String(new Date().getDate() + 1).padStart(2, "0")}T00:00:00.000Z`, `${new Date().getFullYear()}-${String(new Date().getMonth() + 1).padStart(2, "0")}-${String(new Date().getDate() + 1).padStart(2, "0")}T00:00:00.000Z`,
); );

View file

@ -33,7 +33,7 @@ export class ProfileFamilyCoupleController extends Controller {
@Example({ @Example({
status: 200, status: 200,
message: "สำเร็จ", message: "สำเร็จ",
result: [{ result: {
id: "6207ae29-05ef-4abb-9a37-a887265d671e", id: "6207ae29-05ef-4abb-9a37-a887265d671e",
couple: true, couple: true,
couplePrefix: "string", couplePrefix: "string",
@ -45,7 +45,7 @@ export class ProfileFamilyCoupleController extends Controller {
coupleLive: true, coupleLive: true,
relationship: "string", relationship: "string",
profileId: "1526d9d3-d8b1-43ab-81b5-a84dfbe99201", profileId: "1526d9d3-d8b1-43ab-81b5-a84dfbe99201",
}], },
}) })
public async getFamilyCouple(@Path() profileId: string) { public async getFamilyCouple(@Path() profileId: string) {
const profile = await this.profileRepo.findOne({ const profile = await this.profileRepo.findOne({
@ -55,12 +55,13 @@ export class ProfileFamilyCoupleController extends Controller {
if (!profile) { if (!profile) {
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว"); throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
} }
const familyCouple = await this.ProfileFamilyCouple.find({ const familyCouple = await this.ProfileFamilyCouple.findOne({
select: [ select: [
"id", "couple", "couplePrefix", "coupleFirstName", "coupleLastName", "coupleLastNameOld", "id", "couple", "couplePrefix", "coupleFirstName", "coupleLastName", "coupleLastNameOld",
"coupleCareer", "coupleCitizenId", "coupleLive", "relationship", "profileId", "coupleCareer", "coupleCitizenId", "coupleLive", "relationship", "profileId",
], ],
where: { profileId }, where: { profileId },
order: { lastUpdatedAt: "DESC" },
}); });
return new HttpSuccess(familyCouple); return new HttpSuccess(familyCouple);
@ -150,6 +151,7 @@ export class ProfileFamilyCoupleController extends Controller {
await this.ProfileFamilyCouple.save(familyCouple); await this.ProfileFamilyCouple.save(familyCouple);
if (familyCouple) { if (familyCouple) {
profile.relationship = familyCouple.relationship //update profile.relationship
const history: ProfileFamilyCoupleHistory = Object.assign(new ProfileFamilyCoupleHistory(), { const history: ProfileFamilyCoupleHistory = Object.assign(new ProfileFamilyCoupleHistory(), {
profileFamilyCoupleId: familyCouple.id, profileFamilyCoupleId: familyCouple.id,
couple: familyCouple.couple, couple: familyCouple.couple,
@ -165,7 +167,10 @@ export class ProfileFamilyCoupleController extends Controller {
lastUpdateUserId: req.user.sub, lastUpdateUserId: req.user.sub,
lastUpdateFullName: req.user.name, lastUpdateFullName: req.user.name,
}); });
await this.ProfileFamilyCoupleHistory.save(history); await Promise.all([
this.profileRepo.save(profile),
this.ProfileFamilyCoupleHistory.save(history)
]);
} }
return new HttpSuccess(familyCouple.id); return new HttpSuccess(familyCouple.id);
} }

View file

@ -61,6 +61,7 @@ export class ProfileFamilyCoupleEmployeeController extends Controller {
"coupleCareer", "coupleCitizenId", "coupleLive", "relationship", "profileEmployeeId", "coupleCareer", "coupleCitizenId", "coupleLive", "relationship", "profileEmployeeId",
], ],
where: { profileEmployeeId }, where: { profileEmployeeId },
order: { lastUpdatedAt: "DESC" },
}); });
return new HttpSuccess(familyCouple); return new HttpSuccess(familyCouple);
@ -150,6 +151,7 @@ export class ProfileFamilyCoupleEmployeeController extends Controller {
await this.ProfileFamilyCouple.save(familyCouple); await this.ProfileFamilyCouple.save(familyCouple);
if (familyCouple) { if (familyCouple) {
profile.relationship = familyCouple.relationship //update profileEmployee.relationship
const history: ProfileFamilyCoupleHistory = Object.assign(new ProfileFamilyCoupleHistory(), { const history: ProfileFamilyCoupleHistory = Object.assign(new ProfileFamilyCoupleHistory(), {
profileFamilyCoupleId: familyCouple.id, profileFamilyCoupleId: familyCouple.id,
couple: familyCouple.couple, couple: familyCouple.couple,
@ -165,7 +167,10 @@ export class ProfileFamilyCoupleEmployeeController extends Controller {
lastUpdateUserId: req.user.sub, lastUpdateUserId: req.user.sub,
lastUpdateFullName: req.user.name, lastUpdateFullName: req.user.name,
}); });
await this.ProfileFamilyCoupleHistory.save(history); await Promise.all([
this.profileRepo.save(profile),
this.ProfileFamilyCoupleHistory.save(history)
]);
} }
return new HttpSuccess(familyCouple.id); return new HttpSuccess(familyCouple.id);
} }

View file

@ -58,6 +58,7 @@ export class ProfileFamilyFatherController extends Controller {
"fatherCareer", "fatherCitizenId", "fatherLive", "profileId", "fatherCareer", "fatherCitizenId", "fatherLive", "profileId",
], ],
where: { profileId }, where: { profileId },
order: { lastUpdatedAt: "DESC" },
}); });
return new HttpSuccess(familyFather); return new HttpSuccess(familyFather);

View file

@ -58,6 +58,7 @@ export class ProfileFamilyFatherEmployeeController extends Controller {
"fatherCareer", "fatherCitizenId", "fatherLive", "profileEmployeeId", "fatherCareer", "fatherCitizenId", "fatherLive", "profileEmployeeId",
], ],
where: { profileEmployeeId }, where: { profileEmployeeId },
order: { lastUpdatedAt: "DESC" },
}); });
return new HttpSuccess(familyFather); return new HttpSuccess(familyFather);

View file

@ -58,6 +58,7 @@ export class ProfileFamilyMotherController extends Controller {
"motherCareer", "motherCitizenId", "motherLive", "profileId", "motherCareer", "motherCitizenId", "motherLive", "profileId",
], ],
where: { profileId }, where: { profileId },
order: { lastUpdatedAt: "DESC" },
}); });
return new HttpSuccess(familyMother); return new HttpSuccess(familyMother);

View file

@ -58,6 +58,7 @@ export class ProfileFamilyMotherEmployeeController extends Controller {
"motherCareer", "motherCitizenId", "motherLive", "profileEmployeeId", "motherCareer", "motherCitizenId", "motherLive", "profileEmployeeId",
], ],
where: { profileEmployeeId }, where: { profileEmployeeId },
order: { lastUpdatedAt: "DESC" },
}); });
return new HttpSuccess(familyMother); return new HttpSuccess(familyMother);

View file

@ -40,7 +40,7 @@ export class ProfileLeaveEmployeeController extends Controller {
public async getLeave(@Path() profileId: string) { public async getLeave(@Path() profileId: string) {
const record = await this.leaveRepo.find({ const record = await this.leaveRepo.find({
relations: { leaveType: true }, relations: { leaveType: true },
where: { profileId }, where: { profileEmployeeId: profileId },
}); });
return new HttpSuccess(record); return new HttpSuccess(record);
} }

View file

@ -34,23 +34,9 @@ export class ProfileNopaidEmployeeController extends Controller {
private nopaidHistoryRepository = AppDataSource.getRepository(ProfileNopaidHistory); private nopaidHistoryRepository = AppDataSource.getRepository(ProfileNopaidHistory);
@Get("{profileId}") @Get("{profileId}")
@Example({
status: 200,
message: "สำเร็จ",
result: [
{
id: "debfa8a7-83fb-4801-a940-8ae74e7638d3",
date: "2024-03-12T10:09:47.000Z",
reference: "string",
detail: "string",
refCommandNo: "string",
refCommandDate: "2024-03-12T10:09:47.000Z",
},
],
})
public async getNopaid(@Path() profileId: string) { public async getNopaid(@Path() profileId: string) {
const lists = await this.nopaidRepository.find({ const lists = await this.nopaidRepository.find({
where: { profileId }, where: { profileEmployeeId: profileId },
}); });
return new HttpSuccess(lists); return new HttpSuccess(lists);
} }

View file

@ -15,9 +15,9 @@ import {
import { AppDataSource } from "../database/data-source"; import { AppDataSource } from "../database/data-source";
import { import {
CreateProfileSalaryEmployee, CreateProfileSalaryEmployee,
ProfileSalaryEmployee, ProfileSalary,
UpdateProfileSalaryEmployee, UpdateProfileSalaryEmployee,
} from "../entities/ProfileSalaryEmployee"; } from "../entities/ProfileSalary";
import HttpSuccess from "../interfaces/http-success"; import HttpSuccess from "../interfaces/http-success";
import HttpStatus from "../interfaces/http-status"; import HttpStatus from "../interfaces/http-status";
import HttpError from "../interfaces/http-error"; import HttpError from "../interfaces/http-error";
@ -31,13 +31,13 @@ import { LessThan, MoreThan } from "typeorm";
@Security("bearerAuth") @Security("bearerAuth")
export class ProfileSalaryEmployeeController extends Controller { export class ProfileSalaryEmployeeController extends Controller {
private profileRepo = AppDataSource.getRepository(ProfileEmployee); private profileRepo = AppDataSource.getRepository(ProfileEmployee);
private salaryRepo = AppDataSource.getRepository(ProfileSalaryEmployee); private salaryRepo = AppDataSource.getRepository(ProfileSalary);
private salaryHistoryRepo = AppDataSource.getRepository(ProfileSalaryHistory); private salaryHistoryRepo = AppDataSource.getRepository(ProfileSalaryHistory);
@Get("{profileId}") @Get("{profileId}")
public async getSalary(@Path() profileId: string) { public async getSalaryEmployee(@Path() profileId: string) {
const record = await this.salaryRepo.find({ const record = await this.salaryRepo.find({
where: { profileId: profileId }, where: { profileEmployeeId: profileId },
order: { order: "ASC" }, order: { order: "ASC" },
}); });
return new HttpSuccess(record); return new HttpSuccess(record);
@ -52,26 +52,26 @@ export class ProfileSalaryEmployeeController extends Controller {
} }
@Post() @Post()
public async newSalary( public async newSalaryEmployee(
@Request() req: RequestWithUser, @Request() req: RequestWithUser,
@Body() body: CreateProfileSalaryEmployee, @Body() body: CreateProfileSalaryEmployee,
) { ) {
if (!body.profileId) { if (!body.profileEmployeeId) {
throw new HttpError(HttpStatus.BAD_REQUEST, "กรุณากรอก profileId"); throw new HttpError(HttpStatus.BAD_REQUEST, "กรุณากรอก profileEmployeeId");
} }
const profile = await this.profileRepo.findOneBy({ id: body.profileId }); const profile = await this.profileRepo.findOneBy({ id: body.profileEmployeeId });
if (!profile) { if (!profile) {
throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว"); throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว");
} }
const dest_item = await this.salaryRepo.findOne({ const dest_item = await this.salaryRepo.findOne({
where: { profileId: body.profileId }, where: { profileId: body.profileEmployeeId },
order: { order: "DESC" }, order: { order: "DESC" },
}); });
const data = new ProfileSalaryEmployee(); const data = new ProfileSalary();
const meta = { const meta = {
order: dest_item == null ? 1 : dest_item.order + 1, order: dest_item == null ? 1 : dest_item.order + 1,
@ -89,7 +89,7 @@ export class ProfileSalaryEmployeeController extends Controller {
} }
@Patch("{salaryId}") @Patch("{salaryId}")
public async editSalary( public async editSalaryEmployee(
@Request() req: RequestWithUser, @Request() req: RequestWithUser,
@Body() body: UpdateProfileSalaryEmployee, @Body() body: UpdateProfileSalaryEmployee,
@Path() salaryId: string, @Path() salaryId: string,
@ -112,7 +112,7 @@ export class ProfileSalaryEmployeeController extends Controller {
} }
@Delete("{salaryId}") @Delete("{salaryId}")
public async deleteSalary(@Path() salaryId: string) { public async deleteSalaryEmployee(@Path() salaryId: string) {
await this.salaryHistoryRepo.delete({ await this.salaryHistoryRepo.delete({
profileSalaryId: salaryId, profileSalaryId: salaryId,
}); });
@ -127,7 +127,7 @@ export class ProfileSalaryEmployeeController extends Controller {
} }
@Get("swap/{direction}/{salaryId}") @Get("swap/{direction}/{salaryId}")
public async swapSalary(@Path() direction: string, salaryId: string) { public async swapSalaryEmployee(@Path() direction: string, salaryId: string) {
const source_item = await this.salaryRepo.findOne({ where: { id: salaryId } }); const source_item = await this.salaryRepo.findOne({ where: { id: salaryId } });
if (source_item == null) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); if (source_item == null) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
const sourceOrder = source_item.order; const sourceOrder = source_item.order;

View file

@ -3,7 +3,7 @@ import { EntityBase } from "./base/Base";
import { EmployeePosLevel } from "./EmployeePosLevel"; import { EmployeePosLevel } from "./EmployeePosLevel";
import { EmployeePosType } from "./EmployeePosType"; import { EmployeePosType } from "./EmployeePosType";
import { EmployeePosMaster } from "./EmployeePosMaster"; import { EmployeePosMaster } from "./EmployeePosMaster";
import { ProfileSalaryEmployee } from "./ProfileSalaryEmployee"; import { ProfileSalary } from "./ProfileSalary";
import { ProfileCertificate } from "./ProfileCertificate"; import { ProfileCertificate } from "./ProfileCertificate";
import { ProfileTraining } from "./ProfileTraining"; import { ProfileTraining } from "./ProfileTraining";
import { ProfileInsignia } from "./ProfileInsignia"; import { ProfileInsignia } from "./ProfileInsignia";
@ -38,6 +38,13 @@ export class ProfileEmployee extends EntityBase {
}) })
avatar: string; avatar: string;
@Column({
nullable: true,
comment: "รูปถ่าย",
default: null,
})
avatarName: string;
@Column({ @Column({
nullable: true, nullable: true,
comment: "ประเภทลูกจ้าง (perm->ลูกจ้างประจำ temp->ลูกจ้างชั่วคราว)", comment: "ประเภทลูกจ้าง (perm->ลูกจ้างประจำ temp->ลูกจ้างชั่วคราว)",
@ -229,8 +236,8 @@ export class ProfileEmployee extends EntityBase {
@OneToMany(() => EmployeePosMaster, (v) => v.next_holder) @OneToMany(() => EmployeePosMaster, (v) => v.next_holder)
next_holders: EmployeePosMaster[]; next_holders: EmployeePosMaster[];
@OneToMany(() => ProfileSalaryEmployee, (v) => v.profile) @OneToMany(() => ProfileSalary, (v) => v.profile)
profileSalary: ProfileSalaryEmployee[]; profileSalarys: ProfileSalary[];
@OneToMany(() => ProfileCertificate, (v) => v.profileEmployee) @OneToMany(() => ProfileCertificate, (v) => v.profileEmployee)
profileCertificates: ProfileCertificate[]; profileCertificates: ProfileCertificate[];
@ -475,4 +482,4 @@ export type UpdateProfileAddressEmployee = {
currentDistrictId?: string | null; currentDistrictId?: string | null;
currentSubDistrictId?: string | null; currentSubDistrictId?: string | null;
currentZipCode?: string | null; currentZipCode?: string | null;
}; };

View file

@ -16,9 +16,11 @@ import { ProfileSalaryHistory } from "./ProfileSalaryHistory";
@Entity("profileSalary") @Entity("profileSalary")
export class ProfileSalary extends EntityBase { export class ProfileSalary extends EntityBase {
@Column({ @Column({
nullable: true,
length: 40, length: 40,
comment: "คีย์นอก(FK)ของตาราง profile", comment: "คีย์นอก(FK)ของตาราง profile",
type: "uuid", type: "uuid",
default: null,
}) })
profileId: string; profileId: string;
@ -173,9 +175,26 @@ export class CreateProfileSalaryEmployee {
mouthSalaryAmount?: Double | null; mouthSalaryAmount?: Double | null;
posNo: string | null; posNo: string | null;
position: string | null; position: string | null;
positionLine: string | null; // positionLine: string | null;
positionPathSide: string | null; // positionPathSide: string | null;
positionExecutive: string | null; // positionExecutive: string | null;
positionType: string | null;
positionLevel: string | null;
refCommandNo: string | null;
templateDoc: string | null;
}
export class UpdateProfileSalaryEmployee {
profileEmployeeId: string | null;
date?: Date | null;
amount?: Double | null;
positionSalaryAmount?: Double | null;
mouthSalaryAmount?: Double | null;
posNo: string | null;
position: string | null;
// positionLine: string | null;
// positionPathSide: string | null;
// positionExecutive: string | null;
positionType: string | null; positionType: string | null;
positionLevel: string | null; positionLevel: string | null;
refCommandNo: string | null; refCommandNo: string | null;

View file

@ -1,447 +0,0 @@
import { Entity, Column, OneToMany, JoinColumn, ManyToOne, Double } from "typeorm";
import { EntityBase } from "./base/Base";
import { ProfileSalaryEmployeeHistory } from "./ProfileSalaryEmployeeHistory";
import { ProfileEmployee } from "./ProfileEmployee";
@Entity("profileSalaryEmployee")
export class ProfileSalaryEmployee extends EntityBase {
@Column({
comment: "วันที่",
type: "datetime",
nullable: true,
})
date: Date;
@Column({
comment: "เงินเดือนฐาน",
default: 0,
nullable: true,
type: "double",
})
amount: Double;
@Column({
comment: "เงินประจำตำแหน่ง",
default: 0,
nullable: true,
type: "double",
})
positionSalaryAmount: Double;
@Column({
comment: "เงินค่าตอบแทนรายเดือน",
default: 0,
nullable: true,
type: "double",
})
mouthSalaryAmount: Double;
@Column({
length: 40,
comment: "คีย์นอก(FK)ของตาราง profile",
type: "uuid",
})
profileId: string;
@Column({
comment: "สถานะการใช้งาน",
default: false,
})
isActive: boolean;
@Column({
nullable: true,
comment: "ตำแหน่ง (รายละเอียด)",
type: "text",
default: null,
})
salaryClass: string;
@Column({
nullable: true,
comment: "เอกสารอ้างอิง",
type: "text",
default: null,
})
salaryRef: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่ง",
type: "uuid",
default: null,
})
posNoId: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่ง",
type: "uuid",
default: null,
})
positionId: string;
@Column({
nullable: true,
length: 40,
comment: "Id สังกัด",
type: "uuid",
default: null,
})
ocId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ตำแหน่งทางการบริหาร",
type: "uuid",
default: null,
})
positionExecutiveId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้านทางการบริหาร",
type: "uuid",
default: null,
})
positionExecutiveSideId: string;
@Column({
nullable: true,
length: 40,
comment: "",
type: "uuid",
default: null,
})
positionLevelId: string;
@Column({
nullable: true,
length: 40,
comment: "Id สายงาน",
type: "uuid",
default: null,
})
positionLineId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้าน/สาขา",
type: "uuid",
default: null,
})
positionPathSideId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ประเภทตำแหน่ง",
type: "uuid",
default: null,
})
positionTypeId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ชื่อย่อหน่วยงาน",
type: "uuid",
default: null,
})
organizationShortNameId: string;
@Column({
nullable: true,
length: 40,
comment: "Id กลุ่มงาน",
type: "uuid",
default: null,
})
positionEmployeeGroupId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ระดับชั้นงาน",
type: "uuid",
default: null,
})
positionEmployeeLevelId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ตำแหน่ง",
type: "uuid",
default: null,
})
positionEmployeePositionId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้านของตำแหน่ง",
type: "uuid",
default: null,
})
positionEmployeePositionSideId: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่งลูกจ้าง",
default: null,
})
posNoEmployee: string;
@Column({
nullable: true,
type: "datetime",
comment: "เอกสารอ้างอิง (ลงวันที่)",
default: null,
})
refCommandDate: Date;
@Column({
nullable: true,
comment: "เอกสารอ้างอิง (เลขที่คำสั่ง)",
type: "text",
default: null,
})
refCommandNo: string;
@Column({
nullable: true,
comment: "ลำดับ",
default: null,
})
order: number;
// @Column({
// comment: "เลขที่คำสั่ง",
// type: "text",
// })
// commandNo: string;
@Column({
comment: "ประเภทคำสั่ง",
type: "text",
})
commandTypeName: string;
@Column({
nullable: true,
comment: "ประเภทตำแหน่งกรณีพิเศษ",
type: "text",
default: null,
})
salaryStatus: string;
@OneToMany(
() => ProfileSalaryEmployeeHistory,
(profileSalaryHistory) => profileSalaryHistory.histories,
)
profileSalaryHistories: ProfileSalaryEmployeeHistory[];
@ManyToOne(() => ProfileEmployee, (profile) => profile.profileSalary)
@JoinColumn({ name: "profileId" })
profile: ProfileEmployee;
}
export class CreateProfileSalaryEmployee {
@Column({
type: "datetime",
})
date: Date;
@Column({
type: "double",
})
amount: Double;
@Column({
type: "double",
})
positionSalaryAmount: Double;
@Column({
type: "double",
})
mouthSalaryAmount: Double;
@Column({
type: "uuid",
})
profileId: string;
// @Column()
// isActive: boolean;
// @Column()
// salaryClass: string | null;
// @Column()
// salaryRef: string | null;
// @Column("uuid")
// posNoId: string | null;
// @Column("uuid")
// positionId: string | null;
// @Column("uuid")
// ocId: string | null;
// @Column("uuid")
// positionExecutiveId : string | null;
// @Column("uuid")
// positionExecutiveSideId : string | null;
// @Column("uuid")
// positionLevelId : string | null;
// @Column("uuid")
// positionLineId : string | null;
// @Column("uuid")
// positionPathSideId : string | null;
// @Column("uuid")
// positionTypeId : string | null;
// @Column("uuid")
// organizationShortNameId : string | null;
// @Column("uuid")
// positionEmployeeGroupId : string | null;
// @Column("uuid")
// positionEmployeeLevelId : string | null;
// @Column("uuid")
// positionEmployeePositionId : string | null;
// @Column("uuid")
// positionEmployeePositionSideId : string | null;
// @Column()
// posNoEmployee : string | null;
// @Column()
// refCommandDate: Date | null;
// @Column()
// refCommandNo: string | null;
// @Column()
// order: number | null;
// @Column()
// commandNo: string;
// @Column()
// commandTypeName: string;
// @Column()
// salaryStatus: string | null;
}
export class UpdateProfileSalaryEmployee {
@Column({
type: "datetime",
})
date: Date;
@Column({
type: "double",
})
amount: Double;
@Column({
type: "double",
})
positionSalaryAmount: Double;
@Column({
type: "double",
})
mouthSalaryAmount: Double;
// @Column()
// isActive: boolean;
// @Column()
// salaryClass: string;
// @Column()
// salaryRef: string;
// @Column("uuid")
// posNoId: string;
// @Column("uuid")
// positionId: string;
// @Column("uuid")
// ocId: string;
// @Column("uuid")
// positionExecutiveId : string;
// @Column("uuid")
// positionExecutiveSideId : string;
// @Column("uuid")
// positionLevelId : string;
// @Column("uuid")
// positionLineId : string;
// @Column("uuid")
// positionPathSideId : string;
// @Column("uuid")
// positionTypeId : string;
// @Column("uuid")
// organizationShortNameId : string;
// @Column("uuid")
// positionEmployeeGroupId : string;
// @Column("uuid")
// positionEmployeeLevelId : string;
// @Column("uuid")
// positionEmployeePositionId : string;
// @Column("uuid")
// positionEmployeePositionSideId : string;
// @Column()
// posNoEmployee : string;
// @Column()
// refCommandDate: Date;
// @Column()
// refCommandNo: string;
// @Column()
// order: number;
// @Column()
// commandNo: string;
// @Column()
// commandTypeName: string;
// @Column()
// salaryStatus: string;
}

View file

@ -1,440 +0,0 @@
import { Entity, Column, JoinColumn, ManyToOne, Double } from "typeorm";
import { EntityBase } from "./base/Base";
import { ProfileSalaryEmployee } from "./ProfileSalaryEmployee";
@Entity("profileSalaryEmployeeHistory")
export class ProfileSalaryEmployeeHistory extends EntityBase {
@Column({
comment: "วันที่",
type: "datetime",
nullable: true,
})
date: Date;
@Column({
comment: "เงินเดือนฐาน",
default: 0,
nullable: true,
type: "double",
})
amount: Double;
@Column({
comment: "เงินประจำตำแหน่ง",
default: 0,
nullable: true,
type: "double",
})
positionSalaryAmount: Double;
@Column({
comment: "เงินค่าตอบแทนรายเดือน",
default: 0,
nullable: true,
type: "double",
})
mouthSalaryAmount: Double;
@Column({
length: 40,
comment: "คีย์นอก(FK)ของตาราง profile",
type: "uuid",
})
profileId: string;
@Column({
comment: "สถานะการใช้งาน",
default: false,
})
isActive: boolean;
@Column({
nullable: true,
comment: "ตำแหน่ง (รายละเอียด)",
type: "text",
default: null,
})
salaryClass: string;
@Column({
nullable: true,
comment: "เอกสารอ้างอิง",
type: "text",
default: null,
})
salaryRef: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่ง",
type: "uuid",
default: null,
})
posNoId: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่ง",
type: "uuid",
default: null,
})
positionId: string;
@Column({
nullable: true,
length: 40,
comment: "Id สังกัด",
type: "uuid",
default: null,
})
ocId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ตำแหน่งทางการบริหาร",
type: "uuid",
default: null,
})
positionExecutiveId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้านทางการบริหาร",
type: "uuid",
default: null,
})
positionExecutiveSideId: string;
@Column({
nullable: true,
length: 40,
comment: "",
type: "uuid",
default: null,
})
positionLevelId: string;
@Column({
nullable: true,
length: 40,
comment: "Id สายงาน",
type: "uuid",
default: null,
})
positionLineId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้าน/สาขา",
type: "uuid",
default: null,
})
positionPathSideId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ประเภทตำแหน่ง",
type: "uuid",
default: null,
})
positionTypeId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ชื่อย่อหน่วยงาน",
type: "uuid",
default: null,
})
organizationShortNameId: string;
@Column({
nullable: true,
length: 40,
comment: "Id กลุ่มงาน",
type: "uuid",
default: null,
})
positionEmployeeGroupId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ระดับชั้นงาน",
type: "uuid",
default: null,
})
positionEmployeeLevelId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ตำแหน่ง",
type: "uuid",
default: null,
})
positionEmployeePositionId: string;
@Column({
nullable: true,
length: 40,
comment: "Id ด้านของตำแหน่ง",
type: "uuid",
default: null,
})
positionEmployeePositionSideId: string;
@Column({
nullable: true,
length: 40,
comment: "Id เลขที่ตำแหน่งลูกจ้าง",
default: null,
})
posNoEmployee: string;
@Column({
nullable: true,
type: "datetime",
comment: "เอกสารอ้างอิง (ลงวันที่)",
default: null,
})
refCommandDate: Date;
@Column({
nullable: true,
comment: "เอกสารอ้างอิง (เลขที่คำสั่ง)",
type: "text",
default: null,
})
refCommandNo: string;
@Column({
nullable: true,
comment: "ลำดับ",
default: null,
})
order: number;
@Column({
comment: "เลขที่คำสั่ง",
type: "text",
})
commandNo: string;
@Column({
comment: "ประเภทคำสั่ง",
type: "text",
})
commandTypeName: string;
@Column({
nullable: true,
comment: "ประเภทตำแหน่งกรณีพิเศษ",
type: "text",
default: null,
})
salaryStatus: string;
@ManyToOne(() => ProfileSalaryEmployee, (profileSalary) => profileSalary.profileSalaryHistories)
@JoinColumn({ name: "profileSalaryId" })
histories: ProfileSalaryEmployee;
}
export class CreateProfileSalaryEmployeeHistory {
@Column({
type: "datetime",
})
date: Date;
@Column({
type: "double",
})
amount: Double;
@Column({
type: "double",
})
positionSalaryAmount: Double;
@Column({
type: "double",
})
mouthSalaryAmount: Double;
@Column({
type: "uuid",
})
profileId: string;
// @Column()
// isActive: boolean;
// @Column()
// salaryClass: string | null;
// @Column()
// salaryRef: string | null;
// @Column("uuid")
// posNoId: string | null;
// @Column("uuid")
// positionId: string | null;
// @Column("uuid")
// ocId: string | null;
// @Column("uuid")
// positionExecutiveId : string | null;
// @Column("uuid")
// positionExecutiveSideId : string | null;
// @Column("uuid")
// positionLevelId : string | null;
// @Column("uuid")
// positionLineId : string | null;
// @Column("uuid")
// positionPathSideId : string | null;
// @Column("uuid")
// positionTypeId : string | null;
// @Column("uuid")
// organizationShortNameId : string | null;
// @Column("uuid")
// positionEmployeeGroupId : string | null;
// @Column("uuid")
// positionEmployeeLevelId : string | null;
// @Column("uuid")
// positionEmployeePositionId : string | null;
// @Column("uuid")
// positionEmployeePositionSideId : string | null;
// @Column()
// posNoEmployee : string | null;
// @Column()
// refCommandDate: Date | null;
// @Column()
// refCommandNo: string | null;
// @Column()
// order: number | null;
// @Column()
// commandNo: string;
// @Column()
// commandTypeName: string;
// @Column()
// salaryStatus: string | null;
}
export class UpdateProfileSalaryEmployeeHistory {
@Column({
type: "datetime",
})
date: Date;
@Column({
type: "double",
})
amount: Double;
@Column({
type: "double",
})
positionSalaryAmount: Double;
@Column({
type: "double",
})
mouthSalaryAmount: Double;
// @Column()
// isActive: boolean;
// @Column()
// salaryClass: string | null;
// @Column()
// salaryRef: string | null;
// @Column("uuid")
// posNoId: string | null;
// @Column("uuid")
// positionId: string | null;
// @Column("uuid")
// ocId: string | null;
// @Column("uuid")
// positionExecutiveId : string | null;
// @Column("uuid")
// positionExecutiveSideId : string | null;
// @Column("uuid")
// positionLevelId : string | null;
// @Column("uuid")
// positionLineId : string | null;
// @Column("uuid")
// positionPathSideId : string | null;
// @Column("uuid")
// positionTypeId : string | null;
// @Column("uuid")
// organizationShortNameId : string | null;
// @Column("uuid")
// positionEmployeeGroupId : string | null;
// @Column("uuid")
// positionEmployeeLevelId : string | null;
// @Column("uuid")
// positionEmployeePositionId : string | null;
// @Column("uuid")
// positionEmployeePositionSideId : string | null;
// @Column()
// posNoEmployee : string | null;
// @Column()
// refCommandDate: Date | null;
// @Column()
// refCommandNo: string | null;
// @Column()
// order: number | null;
// @Column()
// commandNo: string;
// @Column()
// commandTypeName: string;
// @Column()
// salaryStatus: string | null;
}

View file

@ -0,0 +1,18 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateTableProfileAvatarAddIsactive21715836928018 implements MigrationInterface {
name = 'UpdateTableProfileAvatarAddIsactive21715836928018'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileEmployee\` ADD \`avatarName\` varchar(255) NULL COMMENT 'รูปถ่าย'`);
await queryRunner.query(`ALTER TABLE \`profileEmployeeHistory\` ADD \`avatarName\` varchar(255) NULL COMMENT 'รูปถ่าย'`);
await queryRunner.query(`ALTER TABLE \`profileSalaryEmployee\` CHANGE \`commandTypeName\` \`commandTypeName\` text NULL COMMENT 'ประเภทคำสั่ง'`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileSalaryEmployee\` CHANGE \`commandTypeName\` \`commandTypeName\` text NOT NULL COMMENT 'ประเภทคำสั่ง'`);
await queryRunner.query(`ALTER TABLE \`profileEmployeeHistory\` DROP COLUMN \`avatarName\``);
await queryRunner.query(`ALTER TABLE \`profileEmployee\` DROP COLUMN \`avatarName\``);
}
}

View file

@ -0,0 +1,18 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class UpdateTableProfileAvatarAddIsactive31715843317765 implements MigrationInterface {
name = 'UpdateTableProfileAvatarAddIsactive31715843317765'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileSalary\` DROP FOREIGN KEY \`FK_7534d36579c78107ba08a96be6f\``);
await queryRunner.query(`ALTER TABLE \`profileSalary\` CHANGE \`profileId\` \`profileId\` varchar(40) NULL COMMENT 'คีย์นอก(FK)ของตาราง profile'`);
await queryRunner.query(`ALTER TABLE \`profileSalary\` ADD CONSTRAINT \`FK_7534d36579c78107ba08a96be6f\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`profileSalary\` DROP FOREIGN KEY \`FK_7534d36579c78107ba08a96be6f\``);
await queryRunner.query(`ALTER TABLE \`profileSalary\` CHANGE \`profileId\` \`profileId\` varchar(40) NOT NULL COMMENT 'คีย์นอก(FK)ของตาราง profile'`);
await queryRunner.query(`ALTER TABLE \`profileSalary\` ADD CONSTRAINT \`FK_7534d36579c78107ba08a96be6f\` FOREIGN KEY (\`profileId\`) REFERENCES \`profile\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
}
}