diff --git a/src/app/delete-employee/delete-employee.component.css b/src/app/delete-employee/delete-employee.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/delete-employee/delete-employee.component.html b/src/app/delete-employee/delete-employee.component.html new file mode 100644 index 0000000..f15bdb8 --- /dev/null +++ b/src/app/delete-employee/delete-employee.component.html @@ -0,0 +1,6 @@ +

Delete {{employee.firstName}} {{employee.lastName}}

+Are you sure you want to delete {{employee.firstName}} {{employee.lastName}}? This cant be undone. + + + + diff --git a/src/app/delete-employee/delete-employee.component.ts b/src/app/delete-employee/delete-employee.component.ts new file mode 100644 index 0000000..87b09c3 --- /dev/null +++ b/src/app/delete-employee/delete-employee.component.ts @@ -0,0 +1,38 @@ +import {Component, EventEmitter, Inject, inject, Output} from '@angular/core'; +import {Employee} from "../Employee"; +import { + MAT_DIALOG_DATA, + MatDialogActions, + MatDialogClose, + MatDialogContent, + MatDialogTitle +} from "@angular/material/dialog"; +import {MatButton} from "@angular/material/button"; +import ApiService from "../services/api.service"; + +@Component({ + selector: 'app-delete-employee', + imports: [ + MatDialogContent, + MatDialogTitle, + MatDialogActions, + MatButton, + MatDialogClose + ], + templateUrl: './delete-employee.component.html', + standalone: true, + styleUrl: './delete-employee.component.css' +}) +export class DeleteEmployeeComponent { + private apiService: ApiService = inject(ApiService); + + @Output() + private deleteEvent: EventEmitter = new EventEmitter(); + + constructor(@Inject(MAT_DIALOG_DATA) protected employee: Employee) { + } + + deleteEmployee(id: number) { + this.apiService.deleteById(id).subscribe(); + } +} diff --git a/src/app/employee-list/employee-list.component.html b/src/app/employee-list/employee-list.component.html index ff1fa54..05c6beb 100644 --- a/src/app/employee-list/employee-list.component.html +++ b/src/app/employee-list/employee-list.component.html @@ -37,7 +37,7 @@ - diff --git a/src/app/employee-list/employee-list.component.ts b/src/app/employee-list/employee-list.component.ts index fa346a2..7d10d69 100644 --- a/src/app/employee-list/employee-list.component.ts +++ b/src/app/employee-list/employee-list.component.ts @@ -1,19 +1,21 @@ -import { Component } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Observable, catchError, of, retry } from 'rxjs'; -import { HttpClient, HttpErrorResponse } from '@angular/common/http'; -import { Employee } from '../Employee'; +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {catchError, Observable, of, retry} from 'rxjs'; +import {HttpClient, HttpErrorResponse} from '@angular/common/http'; +import {Employee} from '../Employee'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { MatIconModule } from '@angular/material/icon'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; -import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatTableModule } from '@angular/material/table'; -import { MatSortModule } from '@angular/material/sort'; +import {MatCardModule} from '@angular/material/card'; +import {MatButtonModule} from '@angular/material/button'; +import {MatIconModule} from '@angular/material/icon'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatSnackBar, MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatDividerModule} from '@angular/material/divider'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatTableModule} from '@angular/material/table'; +import {MatSortModule} from '@angular/material/sort'; +import {MatDialog} from "@angular/material/dialog"; +import {DeleteEmployeeComponent} from "../delete-employee/delete-employee.component"; @Component({ selector: 'app-employee-list', @@ -45,7 +47,8 @@ export class EmployeeListComponent { constructor( private readonly httpClient: HttpClient, - private readonly snackBar: MatSnackBar + private readonly snackBar: MatSnackBar, + private readonly deleteDialogue: MatDialog ) { this.employees$ = this.fetchEmployees(); } @@ -71,4 +74,8 @@ export class EmployeeListComponent { panelClass: ['!bg-red-50', '!text-red-900', '!border', '!border-red-100'] }); } + + protected openDeleteDialogue(employee: Employee): void { + this.deleteDialogue.open(DeleteEmployeeComponent, {data: employee}); + } } diff --git a/src/app/services/api.service.ts b/src/app/services/api.service.ts new file mode 100644 index 0000000..55576f9 --- /dev/null +++ b/src/app/services/api.service.ts @@ -0,0 +1,16 @@ +import {inject, Injectable} from "@angular/core"; +import {HttpClient} from "@angular/common/http"; +import {Observable} from "rxjs"; +import {Employee} from "../Employee"; + + +@Injectable({ + providedIn: 'root' +}) +export default class ApiService { + private http: HttpClient = inject(HttpClient); + + public deleteById(id: number): Observable { + return this.http.delete(`http://localhost:8089/employees/${id}`) + } +}