Merge branch 'develop' of github.com:Frappet/hrms-api-org into develop
This commit is contained in:
commit
7d572b18d2
1 changed files with 93 additions and 20 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue