Merge branch 'develop' of github.com:Frappet/hrms-api-org into develop

This commit is contained in:
kittapath 2025-03-10 22:07:17 +07:00
commit 7d572b18d2

View file

@ -1255,28 +1255,100 @@ export class ProfileController extends Controller {
}, },
]; ];
const leave_raw = await this.profileLeaveRepository.find({ const leave_raw = await this.profileLeaveRepository
relations: { leaveType: true }, .createQueryBuilder('profileLeave')
where: { profileId: id }, .leftJoinAndSelect('profileLeave.leaveType', 'leaveType')
order: { dateLeaveStart: "ASC" }, .select([
}); 'profileLeave.leaveTypeId',
const leaves = 'leaveType.name as name',
leave_raw.length > 0 'leaveType.code as code',
? leave_raw.map((item) => ({ 'profileLeave.status',
leaveTypeName: item.leaveType.name, 'profileLeave.profileId',
dateLeaveStart: item.dateLeaveStart 'MAX(profileLeave.dateLeaveStart) as maxDateLeaveStart'
? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) ])
: "", .addSelect('SUM(profileLeave.leaveDays)', 'totalLeaveDays')
leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "", .where('profileLeave.profileId = :profileId', { profileId: id })
})) .andWhere('profileLeave.status = :status', { status: 'approve' })
: [ .groupBy('profileLeave.leaveTypeId')
{ .orderBy('code', 'ASC')
leaveTypeName: "-", .addOrderBy('maxDateLeaveStart', 'ASC')
dateLeaveStart: "-", .getRawMany();
leaveDays: "-",
},
];
const leaves: any[] = [];
leave_raw.forEach((item) => {
const leaveTypeCode = item.code ? item.code.trim().toUpperCase() : '';
if (leaveTypeCode.startsWith('LV-')) {
const lvIndex = parseInt(leaveTypeCode.split('-')[1], 10);
if (lvIndex >= 1 && lvIndex <= 11) {
const leaveTypeCodeKey = `leaveTypeCodeLv${lvIndex}`;
const totalLeaveDaysKey = `totalLeaveDaysLv${lvIndex}`;
const leaveTypeNameKey = `leaveTypeNameLv${lvIndex}`;
const leaveDate = new Date(item.maxDateLeaveStart);
const year = leaveDate?Extension.ToThaiNumber((leaveDate.getFullYear()).toString()):"";
let yearData = leaves.find((data) => data.year === year);
if (!yearData) {
yearData = { year };
for (let i = 1; i <= 11; i++) {
yearData[`leaveTypeCodeLv${i}`] = '-';
yearData[`totalLeaveDaysLv${i}`] = '-';
yearData[`leaveTypeNameLv${i}`] = '-';
}
leaves.push(yearData);
}
yearData[leaveTypeCodeKey] = item.code?item.code:"-";
yearData[totalLeaveDaysKey] = item.totalLeaveDays? Extension.ToThaiNumber((item.totalLeaveDays).toString())
: "-";
yearData[leaveTypeNameKey] = item.name?item.name:"-";
}
}
});
const leave2_raw = await this.profileLeaveRepository
.createQueryBuilder('profileLeave')
.leftJoinAndSelect('profileLeave.leaveType', 'leaveType')
.select([
'profileLeave.leaveTypeId',
'profileLeave.dateLeaveStart',
'profileLeave.dateLeaveEnd',
'leaveType.name as name',
'leaveType.code as code',
'profileLeave.status',
'profileLeave.profileId',
'profileLeave.leaveDays',
'profileLeave.reason',
])
.where('profileLeave.profileId = :profileId', { profileId: id })
.andWhere('leaveType.code IN (:...codes)', { codes: ["LV-008", "LV-009", "LV-010"] })
.andWhere('profileLeave.status = :status', { status: 'approve' })
.orderBy('leaveType.code', 'ASC')
.getRawMany();
const leaves2 =
leave2_raw.length > 0
? leave2_raw.map((item) => ({
date: item.dateLeaveStart
? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart))
: (item.dateLeaveEnd
? " - " + Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd))
: ""),
type: item.name || "-",
leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays) : "-",
reason: item.reason || "-",
}))
: [
{
date: "-",
type: "-",
leaveDays: "-",
reason: "-",
},
];
const children_raw = await this.profileChildrenRepository.find({ const children_raw = await this.profileChildrenRepository.find({
where: { profileId: id }, where: { profileId: id },
}); });
@ -1666,6 +1738,7 @@ export class ProfileController extends Controller {
children, children,
insignias, insignias,
leaves, leaves,
leaves2,
certs, certs,
trainings, trainings,
disciplines, disciplines,