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

Are you sure you want to delete this qualification?

+ + + + diff --git a/src/app/delete-qualification/delete-qualification.component.spec.ts b/src/app/delete-qualification/delete-qualification.component.spec.ts new file mode 100644 index 0000000..34ce630 --- /dev/null +++ b/src/app/delete-qualification/delete-qualification.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteQualificationComponent } from './delete-qualification.component'; + +describe('DeleteQualificationComponent', () => { + let component: DeleteQualificationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [DeleteQualificationComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(DeleteQualificationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/delete-qualification/delete-qualification.component.ts b/src/app/delete-qualification/delete-qualification.component.ts new file mode 100644 index 0000000..124a19c --- /dev/null +++ b/src/app/delete-qualification/delete-qualification.component.ts @@ -0,0 +1,37 @@ +import {Component, inject} from '@angular/core'; +import {MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle} from "@angular/material/dialog"; +import {FormsModule, ReactiveFormsModule} from "@angular/forms"; +import QualificationService from "../services/qualification.service"; + +@Component({ + selector: 'app-delete-qualification', + imports: [ + FormsModule, + MatDialogContent, + MatDialogTitle, + ReactiveFormsModule + ], + templateUrl: './delete-qualification.component.html', + styleUrl: './delete-qualification.component.css' +}) +export class DeleteQualificationComponent { + public id: number = inject(MAT_DIALOG_DATA); + + private qualificationService: QualificationService = inject(QualificationService); + private dialogRef: MatDialogRef = inject(MatDialogRef); + + delete() { + this.qualificationService.delete(this.id).subscribe({ + next: () => { + this.dialogRef.close(true); + }, + error: (error) => { + console.error('Error deleting qualification:', error); + } + }); + } + + closeModal() { + this.dialogRef.close(false); + } +} diff --git a/src/app/qualification/edit/edit.component.ts b/src/app/qualification/edit/edit.component.ts index 20954c9..e0450cf 100644 --- a/src/app/qualification/edit/edit.component.ts +++ b/src/app/qualification/edit/edit.component.ts @@ -71,8 +71,8 @@ export class EditComponent { } this.qualificationService.edit(this.qualification.id, this.qualificationForm.value).subscribe({ - next: (createdQualification) => { - this.dialogRef.close(createdQualification); + next: (editedQualification) => { + this.dialogRef.close(editedQualification); }, error: (error) => { console.error('Error creating qualification:', error); diff --git a/src/app/qualification/table/table.component.ts b/src/app/qualification/table/table.component.ts index 4e53c2a..cd7450f 100644 --- a/src/app/qualification/table/table.component.ts +++ b/src/app/qualification/table/table.component.ts @@ -1,7 +1,7 @@ import {Component, inject, OnInit} from '@angular/core'; import {Observable} from "rxjs"; import {Qualification} from "../Qualification"; -import {AsyncPipe, NgFor} from "@angular/common"; +import {AsyncPipe} from "@angular/common"; import { MatCell, MatCellDef, MatColumnDef, @@ -11,20 +11,18 @@ import { MatRow, MatRowDef, MatTable } from "@angular/material/table"; -import QualificationService from "../../services/qualification.service"; +import QualificationService from "../services/qualification.service"; import {MatDialog} from "@angular/material/dialog"; -import {CreateComponent} from "../create/create.component"; +import {CreateQualificationComponent} from "../create-qualification/create-qualification.component"; import {MatIcon} from "@angular/material/icon"; import {MatButton, MatIconButton} from "@angular/material/button"; -import {EditComponent} from "../edit/edit.component"; -import {MatCard, MatCardContent} from "@angular/material/card"; -import {MatProgressSpinner} from "@angular/material/progress-spinner"; +import {EditQualificationComponent} from "../edit-qualification/edit-qualification.component"; +import {DeleteQualificationComponent} from "../delete-qualification/delete-qualification.component"; @Component({ selector: 'app-qualifications', imports: [ AsyncPipe, - NgFor, MatTable, MatHeaderCell, MatColumnDef, @@ -37,15 +35,12 @@ import {MatProgressSpinner} from "@angular/material/progress-spinner"; MatRowDef, MatIcon, MatIconButton, - MatButton, - MatCard, - MatCardContent, - MatProgressSpinner + MatButton ], - templateUrl: './table.component.html', - styleUrl: './table.component.css' + templateUrl: './qualifications.component.html', + styleUrl: './qualifications.component.css' }) -export class QualificationsComponent implements OnInit{ +export class QualificationsComponent implements OnInit { public qualifications$!: Observable; public readonly displayedColumns: string[] = ['id', 'skill', 'actions']; @@ -61,22 +56,34 @@ export class QualificationsComponent implements OnInit{ } openCreateModal() { - const dialogRef = this.dialog.open(CreateComponent); + const dialogRef = this.dialog.open(CreateQualificationComponent); - dialogRef.afterClosed().subscribe(result => { - if (result) { + dialogRef.afterClosed().subscribe((success: boolean) => { + if (success) { this.loadQualifications(); } }); } openEditModal(qualification: Qualification) { - const dialogRef = this.dialog.open(EditComponent, { + const dialogRef = this.dialog.open(EditQualificationComponent, { data: qualification }); - dialogRef.afterClosed().subscribe(result => { - if (result) { + dialogRef.afterClosed().subscribe((success: boolean) => { + if (success) { + this.loadQualifications(); + } + }); + } + + openDeleteModal(id: number) { + const dialogRef = this.dialog.open(DeleteQualificationComponent, { + data: id + }); + + dialogRef.afterClosed().subscribe((success: boolean) => { + if (success) { this.loadQualifications(); } }); diff --git a/src/app/qualifications/qualifications.component.html b/src/app/qualifications/qualifications.component.html new file mode 100644 index 0000000..517cbcd --- /dev/null +++ b/src/app/qualifications/qualifications.component.html @@ -0,0 +1,42 @@ +
+

Qualifications

+ +
+ +@if (qualifications$ | async; as qualifications) { + @if (qualifications) { + + + + + + + + + + + + + + + + + + +
ID{{ qualification.id }}Skill{{ qualification.skill }}Actions + + +
+ } +} diff --git a/src/app/services/qualification.service.ts b/src/app/services/qualification.service.ts index 274f3a8..37425fd 100644 --- a/src/app/services/qualification.service.ts +++ b/src/app/services/qualification.service.ts @@ -25,4 +25,8 @@ export default class QualificationService { public edit(id: number, data: any) { return this.http.put(`${QualificationService.BASE_URL}/qualifications/${id}`, data) } + + delete(id: number) { + return this.http.delete(`${QualificationService.BASE_URL}/qualifications/${id}`) + } }