From 8d778ae773bb863e070c13d264a6a51f227d4c3f Mon Sep 17 00:00:00 2001 From: Jan Klattenhoff Date: Wed, 15 Jan 2025 20:19:21 +0100 Subject: [PATCH] refactor: simplify employee management logic in component --- .../qualifikation-form.component.html | 21 +--- .../qualifikation-form.component.ts | 96 +++++++++---------- .../qualifikaton-bearbeiten-view.component.ts | 2 +- 3 files changed, 51 insertions(+), 68 deletions(-) diff --git a/src/app/components/qualifikation-form/qualifikation-form.component.html b/src/app/components/qualifikation-form/qualifikation-form.component.html index d00be94..cdd67ea 100644 --- a/src/app/components/qualifikation-form/qualifikation-form.component.html +++ b/src/app/components/qualifikation-form/qualifikation-form.component.html @@ -11,17 +11,7 @@

Employees possessing the qualification

- + @if (addableEmployees.length > 0) {
- +
+ } diff --git a/src/app/components/qualifikation-form/qualifikation-form.component.ts b/src/app/components/qualifikation-form/qualifikation-form.component.ts index a6f1e82..166d26b 100644 --- a/src/app/components/qualifikation-form/qualifikation-form.component.ts +++ b/src/app/components/qualifikation-form/qualifikation-form.component.ts @@ -19,58 +19,11 @@ export class QualifikationFormComponent { @Output() skillChange = new EventEmitter(); public skillForm!: FormGroup; - public employees: Observable = of(); - public allEmployees: Observable> = of([]); - public hiddenEmployees: Array = []; - public addedEmployees: Observable> = of([]); - public addedEmployeesIds: Array = []; - errorMessages: Record = {}; + public addableEmployees: Array = []; + public addedEmployees: Array = []; constructor(private skillService: SkillService, private employeeService: EmployeeService) { } - removeEmployee(id: number) { - this.hiddenEmployees.push(id); - } - - isEmployeeHidden(id: number) { - for (const employeeId of this.hiddenEmployees) { - if (id == employeeId) { - return true - } - } - - return false; - } - - employeeHasSkill(employee: EmployeeResponseDTO) { - - for (const id of this.addedEmployeesIds) { - console.log(id, employee.id); - if (id == employee.id) { - return true; - } - } - - for (const employeeSkill of employee.skillSet || []) { - if (employeeSkill.id == this.skill.id) { - return true; - } - } - - return false; - } - - addEmployee() { - console.log("a"); - const employeeId = this.skillForm.get("newEmployee")?.value; - this.employeeService.getEmployeeById(employeeId).subscribe(employee => { - this.addedEmployees.pipe(tap(employeeList => { - employeeList.push(employee); - this.addedEmployeesIds.push(employee.id); - })).subscribe(); - }); - } - setUpForm() { this.skillForm = new FormGroup({ name: new FormControl(this.skill.skill, Validators.required), @@ -78,13 +31,54 @@ export class QualifikationFormComponent { }); } + + addEmployee() { + console.log("called"); + const employeeId = Number(this.skillForm.get("newEmployee")?.value); + const employee = this.addableEmployees.find(emp => emp.id === employeeId); + + if (employee) { + this.addableEmployees = this.addableEmployees.filter(emp => emp.id !== employeeId); + + this.addedEmployees.push(employee); + } + } + + removeEmployee(employeeId: number) { + const employee = this.addedEmployees.find(emp => emp.id === employeeId); + + if (employee) { + this.addedEmployees = this.addedEmployees.filter(emp => emp.id !== employeeId); + + this.employeeService.getEmployeeById(employee.id).subscribe(employeeDto => { + this.addableEmployees.push(employeeDto); + }); + } + } + + updateEmployeeLists() { + if (this.skill.id != -1) { + this.employeeService.getAllEmployees().subscribe(employees => { + this.addableEmployees = employees; + + this.skillService.getEmployeesBySkill(this.skill.id).subscribe(addedEmployeesResponse => { + this.addedEmployees = addedEmployeesResponse.employees; + + this.addableEmployees = this.addableEmployees.filter(employee => { + return !this.addedEmployees.some(added => added.id === employee.id); + }); + }); + }); + } + } + ngOnChanges(): void { this.setUpForm(); - this.employees = this.skillService.getEmployeesBySkill(this.skill.id); + this.updateEmployeeLists(); } ngOnInit() { this.setUpForm(); - this.allEmployees = this.employeeService.getAllEmployees(); + this.updateEmployeeLists(); } } diff --git a/src/app/components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component.ts b/src/app/components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component.ts index ed279c8..2ad4759 100644 --- a/src/app/components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component.ts +++ b/src/app/components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component.ts @@ -23,7 +23,7 @@ export class QualifikatonBearbeitenViewComponent { ngOnInit(): void { this.skill = { - id: 0, + id: -1, skill: '', };