diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 18c70af..04ea690 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,25 +1,10 @@ -import {Component} from '@angular/core'; -import {RouterOutlet} from '@angular/router'; -import {LoginViewComponent} from "./components/login-view/login-view.component"; -import { - MitarbeiterverwaltungViewComponent -} from "./components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component"; - -import {NavigationBarComponent} from './components/navigation-bar/navigation-bar.component'; -import {EmployeeDetailComponent} from './components/employee-detail/employee-detail.component'; -import { - MitarbeiterBearbeitenViewComponent -} from "./components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component"; -import { - QualifikatonBearbeitenViewComponent -} from "./components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component"; -import {QualifikatonDetailComponent} from "./components/qualifikaton-detail/qualifikaton-detail.component"; - +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, - imports: [RouterOutlet, NavigationBarComponent, EmployeeDetailComponent, LoginViewComponent, MitarbeiterverwaltungViewComponent, MitarbeiterBearbeitenViewComponent, QualifikatonBearbeitenViewComponent, QualifikatonDetailComponent], + imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 93c626a..fff369b 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -3,9 +3,8 @@ import { LoginViewComponent } from "./components/login-view/login-view.component import { MitarbeiterverwaltungViewComponent } from "./components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component"; import { EmployeeDetailComponent } from "./components/employee-detail/employee-detail.component"; import { QualifikatonBearbeitenViewComponent } from "./components/qualifikaton-bearbeiten-view/qualifikaton-bearbeiten-view.component"; -import { KeycloakAuthGuard } from "keycloak-angular"; -import { AuthGuard } from "./service/auth.service"; import { MitarbeiterBearbeitenViewComponent } from "./components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component"; +import { AuthGuard } from "./service/auth.service"; export const routes: Routes = [ { diff --git a/src/app/components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component.ts b/src/app/components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component.ts index 253070e..cc4c5f6 100644 --- a/src/app/components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component.ts +++ b/src/app/components/mitarbeiter-bearbeiten-view/mitarbeiter-bearbeiten-view.component.ts @@ -1,8 +1,8 @@ import { Component } from '@angular/core'; import { MitarbeiterFormComponent } from '../mitarbeiter-form/mitarbeiter-form.component'; import { EmployeeResponseDTO } from '../../models/mitarbeiter'; -import { EmployeeService } from '../../service/employee.service'; import { ActivatedRoute, Router } from '@angular/router'; +import { EmployeeService } from '../../service/employee.service'; @Component({ selector: 'app-mitarbeiter-bearbeiten-view', 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 baea199..7823733 100644 --- a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.html +++ b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.html @@ -1,49 +1,57 @@

Employees

+
- +
+ +

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

+
- - - - - - - - - + + + + + + + + + + @if (employees) { + @for (employee of employees; track employee) { + + + + + + + + + + } + }
First NameLast NameStreetPostcodeCityPhoneActions
First NameLast NameStreetPostcodeCityPhoneActions
{{ employee.firstName }}{{ employee.lastName }}{{ employee.street }}{{ employee.postcode }}{{ employee.city }}{{ employee.phone }} + + +
diff --git a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts index 3a8f197..afcdff1 100644 --- a/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts +++ b/src/app/components/mitarbeiterverwaltung-view/mitarbeiterverwaltung-view.component.ts @@ -1,12 +1,60 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; +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'; +import { Router } from '@angular/router'; @Component({ selector: 'app-mitarbeiterverwaltung-view', - standalone: true, - imports: [], templateUrl: './mitarbeiterverwaltung-view.component.html', - styleUrl: './mitarbeiterverwaltung-view.component.css' + styleUrls: ['./mitarbeiterverwaltung-view.component.css'], + standalone: true, + imports: [CommonModule, ReactiveFormsModule] }) -export class MitarbeiterverwaltungViewComponent { +export class MitarbeiterverwaltungViewComponent implements OnInit { + employees: Array = []; + searchForm!: FormGroup; + constructor(private employeeService: EmployeeService, private router: Router) {} + + 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; + }); + } + + editEmployee(id: number) { + this.router.navigate([`/mitarbeiterbearbeiten/${id}`]); + } + + deleteEmployee(id: number) { + this.employeeService.deleteEmployee(id); + this.employees = this.employees.filter(employee => employee.id != id); + } + + ngOnInit(): void { + this.searchForm = new FormGroup({ + search: new FormControl(''), + }); + this.employeeService.getAllEmployees().subscribe(employees => this.employees = employees); + } } diff --git a/src/app/service/employee.service.ts b/src/app/service/employee.service.ts index a8a4d38..e87bcf5 100644 --- a/src/app/service/employee.service.ts +++ b/src/app/service/employee.service.ts @@ -31,6 +31,9 @@ export class EmployeeService { return this.http.get>(`${SkillService.BASE_URL}/employees`); } + deleteEmployee(id: number) { + this.http.delete(`${SkillService.BASE_URL}/employees/${id}`).subscribe(); + } getEmployeeById(id: number): Observable { return this.http.get(`${SkillService.BASE_URL}/employees/${id}`); diff --git a/src/main.ts b/src/main.ts index 35b00f3..c684fa1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,7 @@ +import { HttpClientModule } from '@angular/common/http'; import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; -bootstrapApplication(AppComponent, appConfig) +bootstrapApplication(AppComponent , appConfig,) .catch((err) => console.error(err));