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

Create Employee

+ +
+
+
+ + First Name + + + + + Last Name + + +
+ + + Street + + + +
+ + City + + + + + Postcode + + +
+ + + Phone + + + + + + +
+
+ +
diff --git a/src/app/create-employee/create-employee.component.ts b/src/app/create-employee/create-employee.component.ts new file mode 100644 index 0000000..dc99e20 --- /dev/null +++ b/src/app/create-employee/create-employee.component.ts @@ -0,0 +1,49 @@ +import {Component, inject, OnInit} from '@angular/core'; +import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms"; +import {MatFormField, MatLabel} from "@angular/material/form-field"; +import {MatInput} from "@angular/material/input"; +import {MatButton} from "@angular/material/button"; +import {MatDialogActions, MatDialogContent, MatDialogTitle} from "@angular/material/dialog"; +import {Employee} from "../Employee"; +import EmployeeApiService from "../services/employee-api.service"; + +@Component({ + selector: 'app-create-employee', + imports: [ + ReactiveFormsModule, + MatFormField, + MatInput, + MatButton, + MatLabel, + MatDialogContent, + MatDialogTitle, + MatDialogActions + ], + templateUrl: './create-employee.component.html', + standalone: true, + styleUrl: './create-employee.component.css' +}) +export class CreateEmployeeComponent implements OnInit{ + employeeForm!: FormGroup; + employeeService: EmployeeApiService = inject(EmployeeApiService); + + ngOnInit(): void { + this.employeeForm = new FormGroup({ + firstName: new FormControl('', {validators: [Validators.required]}), + lastName: new FormControl('', {validators: [Validators.required]}), + street: new FormControl('', {validators: [Validators.required]}), + postcode: new FormControl('', {validators: [Validators.required, Validators.minLength(5), Validators.maxLength(5)]}), + city: new FormControl('', {validators: [Validators.required]}), + phone: new FormControl('', {validators: [Validators.required]}), + }); + } + + submit() { + if (!this.employeeForm.valid) { + console.error('Form invalid'); + return; + } + + this.employeeService.create(this.employeeForm.value as Employee).subscribe(); + } +} diff --git a/src/app/employee-list/employee-list.component.html b/src/app/employee-list/employee-list.component.html index ae30d76..99d6bac 100644 --- a/src/app/employee-list/employee-list.component.html +++ b/src/app/employee-list/employee-list.component.html @@ -4,7 +4,7 @@

Employee Directory

- diff --git a/src/app/employee-list/employee-list.component.ts b/src/app/employee-list/employee-list.component.ts index c2b5d4d..0725dfd 100644 --- a/src/app/employee-list/employee-list.component.ts +++ b/src/app/employee-list/employee-list.component.ts @@ -17,6 +17,7 @@ import {MatSortModule} from '@angular/material/sort'; import {MatDialog} from "@angular/material/dialog"; import {DeleteEmployeeComponent} from "../delete-employee/delete-employee.component"; import EmployeeApiService from "../services/employee-api.service"; +import {CreateEmployeeComponent} from "../create-employee/create-employee.component"; @Component({ selector: 'app-employee-list', @@ -44,6 +45,7 @@ export class EmployeeListComponent 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 static readonly MAX_RETRIES = 3; public employees$: Observable = of([]); @@ -76,4 +78,8 @@ export class EmployeeListComponent implements OnInit{ protected openDeleteDialogue(employee: Employee): void { this.deleteDialogue.open(DeleteEmployeeComponent, {data: employee}); } + + protected showCreateEmployeeModal() { + this.createEmployeeDialogue.open(CreateEmployeeComponent); + } } diff --git a/src/app/services/employee-api.service.ts b/src/app/services/employee-api.service.ts index c742de7..75281fc 100644 --- a/src/app/services/employee-api.service.ts +++ b/src/app/services/employee-api.service.ts @@ -19,4 +19,8 @@ export default class EmployeeApiService { public getAll(): Observable { return this.http.get(`${EmployeeApiService.BASE_URL}/employees`) } + + public create(employee: Employee) { + return this.http.post(`${EmployeeApiService.BASE_URL}/employees`, employee) + } }