diff --git a/src/app/employee/create/create.component.html b/src/app/employee/create/create.component.html index 50c81ea..268bf0a 100644 --- a/src/app/employee/create/create.component.html +++ b/src/app/employee/create/create.component.html @@ -33,7 +33,7 @@ Phone - + diff --git a/src/app/employee/edit/edit.component.css b/src/app/employee/edit/edit.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/employee/edit/edit.component.html b/src/app/employee/edit/edit.component.html new file mode 100644 index 0000000..d0ee93b --- /dev/null +++ b/src/app/employee/edit/edit.component.html @@ -0,0 +1,46 @@ +Create Employee + + + + + + First Name + + + + + Last Name + + + + + + Street + + + + + + City + + + + + Postcode + + + + + + Phone + + + + + Cancel + Submit + + + + + diff --git a/src/app/employee/edit/edit.component.ts b/src/app/employee/edit/edit.component.ts new file mode 100644 index 0000000..ca61374 --- /dev/null +++ b/src/app/employee/edit/edit.component.ts @@ -0,0 +1,63 @@ +import {Component, inject, OnInit} from '@angular/core'; +import {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms"; +import { + MAT_DIALOG_DATA, + MatDialogActions, + MatDialogClose, + MatDialogContent, + MatDialogRef, + MatDialogTitle +} from "@angular/material/dialog"; +import {NgIf} from "@angular/common"; +import {MatFormField} from "@angular/material/form-field"; +import {MatInput, MatLabel} from "@angular/material/input"; +import {MatButton} from "@angular/material/button"; +import {Employee} from "../Employee"; +import EmployeeApiService from "../../services/employee-api.service"; + +@Component({ + selector: 'app-edit', + imports: [ + MatDialogTitle, + MatDialogContent, + NgIf, + ReactiveFormsModule, + MatFormField, + MatInput, + MatDialogActions, + MatButton, + MatDialogClose, + MatLabel + ], + templateUrl: './edit.component.html', + standalone: true, + styleUrl: './edit.component.css' +}) +export class EditComponent implements OnInit { + employeeForm: FormGroup | null = null; + formBuilder: FormBuilder = inject(FormBuilder); + employeeService: EmployeeApiService = inject(EmployeeApiService); + dialogRef: MatDialogRef = inject(MatDialogRef); + employee: Employee = inject(MAT_DIALOG_DATA); + + ngOnInit(): void { + this.employeeForm = this.formBuilder.group({ + firstName: [this.employee.firstName, Validators.required], + lastName: [this.employee.lastName, Validators.required], + street: [this.employee.street, Validators.required], + postcode: [this.employee.postcode, [Validators.required, Validators.minLength(5), Validators.maxLength(5)]], + city: [this.employee.city, Validators.required], + phone: [this.employee.phone, Validators.required], + }); + } + + submit() { + if (this.employeeForm === null || !this.employeeForm.valid) { + console.error('Form invalid'); + return; + } + + this.employeeService.create(this.employeeForm.value as Employee).subscribe(); + this.dialogRef.close(); + } +} diff --git a/src/app/employee/table/table.component.html b/src/app/employee/table/table.component.html index d5f743e..f999470 100644 --- a/src/app/employee/table/table.component.html +++ b/src/app/employee/table/table.component.html @@ -34,7 +34,7 @@ Actions - + edit diff --git a/src/app/employee/table/table.component.ts b/src/app/employee/table/table.component.ts index def3f10..71d62f5 100644 --- a/src/app/employee/table/table.component.ts +++ b/src/app/employee/table/table.component.ts @@ -18,6 +18,7 @@ import {MatDialog} from "@angular/material/dialog"; import {DeleteComponent} from "../delete/delete.component"; import EmployeeApiService from "../../services/employee-api.service"; import {CreateComponent} from "../create/create.component"; +import {EditComponent} from "../edit/edit.component"; @Component({ selector: 'app-employee-list', @@ -41,8 +42,7 @@ import {CreateComponent} from "../create/create.component"; export class TableComponent implements OnInit{ private readonly apiService: EmployeeApiService = inject(EmployeeApiService); private readonly snackBar: MatSnackBar = inject(MatSnackBar); - private readonly deleteDialogue: MatDialog = inject(MatDialog); - private readonly createEmployeeDialogue: MatDialog = inject(MatDialog); + private readonly matDialog: MatDialog = inject(MatDialog); private static readonly MAX_RETRIES = 3; public employees$: Observable = of([]); @@ -73,14 +73,22 @@ export class TableComponent implements OnInit{ } protected openDeleteDialogue(employee: Employee): void { - this.deleteDialogue.open(DeleteComponent, {data: employee}); + this.matDialog.open(DeleteComponent, {data: employee}); } protected showCreateEmployeeModal() { - this.createEmployeeDialogue.open(CreateComponent) + this.matDialog.open(CreateComponent) .afterClosed() .subscribe(() => { this.employees$ = this.fetchEmployees(); }); } + + showEditEmployeeModal(employee: Employee) { + this.matDialog.open(EditComponent, {data: employee}) + .afterClosed() + .subscribe(() => { + this.employees$ = this.fetchEmployees(); + }); + } }