diff --git a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.css b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.css index 6f010a4..3d3b957 100644 --- a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.css +++ b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.css @@ -19,7 +19,7 @@ h1 { .search-bar { display: flex; - margin-bottom: 20px; + margin-bottom: 10px; align-items: center; } diff --git a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.html b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.html index d450f2e..55f61a3 100644 --- a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.html +++ b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.html @@ -13,10 +13,13 @@
- +
+ +

Search for a propertiy of an Employee. eg. First Name

+
@@ -33,7 +36,8 @@ - @for (employee of employees | async; track employee) { + @if (employees) { + @for (employee of employees; track employee) { {{ employee.firstName }} {{ employee.lastName }} @@ -47,6 +51,7 @@ } + } diff --git a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts index 5e94483..4f73fdf 100644 --- a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts +++ b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts @@ -3,20 +3,48 @@ import { CommonModule } from '@angular/common'; import { Observable, of } from 'rxjs'; import { EmployeeResponseDTO } from '../../models/mitarbeiter'; import { EmployeeService } from '../../service/employee.service'; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; @Component({ selector: 'app-mitarbeiterverwaltung-view', templateUrl: './mitarbeiterverwaltung-view.component.html', styleUrls: ['./mitarbeiterverwaltung-view.component.css'], standalone: true, - imports: [CommonModule] + imports: [CommonModule, ReactiveFormsModule] }) export class MitarbeiterverwaltungViewComponent implements OnInit { - employees: Observable> = of([]); + employees: Array = []; + searchForm!: FormGroup; constructor(private employeeService: EmployeeService) {} + submit() { + const searchTerm = this.searchForm.get("search")?.value || ''; + + this.employeeService.getAllEmployees().subscribe(employees => { + let foundEmployees: Array = []; + for (const employee of employees) { + if ( + employee.firstName.toLowerCase().includes(searchTerm.toLowerCase()) || + employee.lastName.toLowerCase().includes(searchTerm.toLowerCase()) || + employee.street.toLowerCase().includes(searchTerm.toLowerCase()) || + employee.postcode.toLowerCase().includes(searchTerm.toLowerCase()) || + employee.city.toLowerCase().includes(searchTerm.toLowerCase()) || + employee.phone.toLowerCase().includes(searchTerm.toLowerCase()) || + searchTerm == '' + ) { + foundEmployees.push(employee); + } + } + + this.employees = foundEmployees; + }); + } + ngOnInit(): void { - this.employees = this.employeeService.getAllEmployees(); + this.searchForm = new FormGroup({ + search: new FormControl(''), + }); + this.employeeService.getAllEmployees().subscribe(employees => this.employees = employees); } }