From 262442905d0b5178c9239dbc571541c971dd15df Mon Sep 17 00:00:00 2001 From: samuelmbabhazi Date: Mon, 13 Jan 2025 22:58:34 +0200 Subject: [PATCH 1/2] Fix:Issues in the Approval Request Screen for the Employee --- .../approvals/approvals-mutation.component.ts | 96 +++++++------------ .../employee-with-links.component.ts | 4 + 2 files changed, 40 insertions(+), 60 deletions(-) diff --git a/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts b/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts index 0f7a92ffb59..177bb978cad 100644 --- a/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts +++ b/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts @@ -62,8 +62,8 @@ export class RequestApprovalMutationComponent extends TranslationBaseComponent i ngOnInit(): void { if (this.requestApproval) { - this.selectedTeams = this.requestApproval.teamApprovals.map((team) => team.teamId); - this.selectedEmployees = this.requestApproval.employeeApprovals.map((emp) => emp.employeeId); + this.selectedTeams = this.requestApproval.teamApprovals?.map((team) => team.teamId) ?? []; + this.selectedEmployees = this.requestApproval.employeeApprovals?.map((emp) => emp.employeeId) ?? []; } this.initializeForm(); this.loadSelectedOrganization(); @@ -137,77 +137,53 @@ export class RequestApprovalMutationComponent extends TranslationBaseComponent i async initializeForm() { this.form = this.fb.group({ - name: [ - this.requestApproval && this.requestApproval.name ? this.requestApproval.name : '', - Validators.required - ], - employees: [ - this.requestApproval && - this.requestApproval.employeeApprovals && - this.requestApproval.employeeApprovals.length > 0 - ? this.requestApproval.employeeApprovals.map((emp) => emp.id) - : [] - ], - teams: [ - this.requestApproval && - this.requestApproval.teamApprovals && - this.requestApproval.teamApprovals.length > 0 - ? this.requestApproval.teamApprovals.map((team) => team.id) - : [] - ], - min_count: [ - this.requestApproval && this.requestApproval.min_count ? this.requestApproval.min_count : 1, - Validators.required - ], - approvalPolicyId: [ - this.requestApproval && this.requestApproval.approvalPolicyId - ? this.requestApproval.approvalPolicyId - : '', - Validators.required - ], - id: [this.requestApproval && this.requestApproval.id ? this.requestApproval.id : null], - tags: this.requestApproval && this.requestApproval.tags ? [this.requestApproval.tags] : [] + name: [this.requestApproval?.name ?? '', Validators.required], + employees: [this.requestApproval?.employeeApprovals?.map((emp) => emp.id) ?? []], + teams: [this.requestApproval?.teamApprovals?.map((team) => team.id) ?? []], + min_count: [this.requestApproval?.min_count ?? 1, Validators.required], + approvalPolicyId: [this.requestApproval?.approvalPolicyId ?? '', Validators.required], + id: [this.requestApproval?.id ?? null], + tags: [this.requestApproval?.tags ?? []] }); - this.participants = - this.requestApproval && this.requestApproval.teamApprovals.length > 0 ? 'teams' : 'employees'; + this.participants = this.requestApproval?.teamApprovals?.length > 0 ? 'teams' : 'employees'; this.tags = this.form.get('tags').value || []; - if (this.requestApproval) { - if (this.requestApproval.approvalPolicy) { - switch (this.requestApproval.approvalPolicy.approvalType) { - case ApprovalPolicyTypesStringEnum.TIME_OFF: - case ApprovalPolicyTypesStringEnum.EQUIPMENT_SHARING: - this.form.get('approvalPolicyId').disable(); - break; - } + if (this.requestApproval?.approvalPolicy) { + switch (this.requestApproval.approvalPolicy.approvalType) { + case ApprovalPolicyTypesStringEnum.TIME_OFF: + case ApprovalPolicyTypesStringEnum.EQUIPMENT_SHARING: + this.form.get('approvalPolicyId').disable(); + break; } } } - async closeDialog(requestApproval?: IRequestApproval) { + closeDialog(requestApproval?: IRequestApproval) { const members: any[] = []; const listEmployees: any[] = []; - if (requestApproval) { - if (requestApproval.teams) { - this.teams.forEach((i) => { - requestApproval.teams.forEach((e: any) => { - if (e === i.id) { - i.members.forEach((id) => { - members.push(id.employeeId); - }); - } - }); - }); - } - if (requestApproval.employees) { - requestApproval.employees.forEach((e) => { - if (!members.includes(e)) { - listEmployees.push(e); + + if (requestApproval?.teams && this.teams) { + this.teams.forEach((i) => { + requestApproval.teams.forEach((e: any) => { + if (e === i.id) { + i.members?.forEach((id) => { + members.push(id.employeeId); + }); } }); - } + }); + } + if (requestApproval?.employees) { + requestApproval.employees.forEach((e) => { + if (!members.includes(e)) { + listEmployees.push(e); + } + }); + } + if (requestApproval) { requestApproval.employees = listEmployees; } + this.onReset(); this.dialogRef.close(requestApproval); } diff --git a/packages/ui-core/shared/src/lib/table-components/employee-with-links/employee-with-links.component.ts b/packages/ui-core/shared/src/lib/table-components/employee-with-links/employee-with-links.component.ts index d8e7c1546b6..bd5f2dc9f59 100644 --- a/packages/ui-core/shared/src/lib/table-components/employee-with-links/employee-with-links.component.ts +++ b/packages/ui-core/shared/src/lib/table-components/employee-with-links/employee-with-links.component.ts @@ -30,6 +30,10 @@ export class EmployeeWithLinksComponent implements OnInit { * @return {void} This function does not return anything. */ initializeGrouping(): void { + if (!this.value) { + return; + } + const GROUP = 3; const SIZE = this.value.length; let count = 0; From 8f2860246ee2f78befb903e6d368db9c9bef2522 Mon Sep 17 00:00:00 2001 From: samuelmbabhazi Date: Tue, 14 Jan 2025 11:52:34 +0200 Subject: [PATCH 2/2] Integrate Coderabbitai suggestion --- .../approvals/approvals-mutation.component.ts | 36 +++++++------------ 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts b/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts index 177bb978cad..e7dd089661f 100644 --- a/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts +++ b/packages/ui-core/shared/src/lib/approvals/approvals-mutation.component.ts @@ -159,31 +159,21 @@ export class RequestApprovalMutationComponent extends TranslationBaseComponent i } closeDialog(requestApproval?: IRequestApproval) { - const members: any[] = []; - const listEmployees: any[] = []; - - if (requestApproval?.teams && this.teams) { - this.teams.forEach((i) => { - requestApproval.teams.forEach((e: any) => { - if (e === i.id) { - i.members?.forEach((id) => { - members.push(id.employeeId); - }); - } - }); - }); - } - if (requestApproval?.employees) { - requestApproval.employees.forEach((e) => { - if (!members.includes(e)) { - listEmployees.push(e); - } - }); - } - if (requestApproval) { - requestApproval.employees = listEmployees; + if (!requestApproval) { + return this.dialogRef.close(requestApproval); } + const teamMemberIds = new Set( + requestApproval.teams + ?.flatMap((reqTeam) => + this.teams?.find((team) => team.id === reqTeam.id)?.members?.map((member) => member.employeeId) + ) + .filter(Boolean) ?? [] + ); + + requestApproval.employees = + requestApproval.employees?.filter((reqEmployee) => !teamMemberIds.has(reqEmployee.id)) ?? []; + this.onReset(); this.dialogRef.close(requestApproval); }