diff --git a/src/app/holder/contacts/contacts.component.html b/src/app/holder/contacts/contacts.component.html index a685f12..cd9c4f2 100644 --- a/src/app/holder/contacts/contacts.component.html +++ b/src/app/holder/contacts/contacts.component.html @@ -25,6 +25,12 @@ {{ contact.firstName }} + + + Middle Initial + {{ contact.middleInitial }} + + Last Name @@ -34,7 +40,7 @@ Title - {{ contact.title }} + {{ getContactTitleLabel(contact.title) }} @@ -49,6 +55,12 @@ {{ contact.mobile | phone }} + + + Fax + {{ contact.fax }} + + Email @@ -147,20 +159,18 @@
- Title - - work + + + {{ contactTitle.name }} + + Title is required - - Maximum 100 characters allowed -
-
Phone diff --git a/src/app/holder/contacts/contacts.component.ts b/src/app/holder/contacts/contacts.component.ts index 0dd60bf..37109dd 100644 --- a/src/app/holder/contacts/contacts.component.ts +++ b/src/app/holder/contacts/contacts.component.ts @@ -16,8 +16,10 @@ import { MatDialog } from '@angular/material/dialog'; import { ConfirmDialogComponent } from '../../shared/components/confirm-dialog/confirm-dialog.component'; import { NavigationService } from '../../core/services/common/navigation.service'; import { StorageService } from '../../core/services/common/storage.service'; -import { finalize } from 'rxjs'; +import { finalize, Subject, takeUntil } from 'rxjs'; import { environment } from '../../../environments/environment'; +import { ContactTitle } from '../../core/models/contact-title'; +import { CommonService } from '../../core/services/common/common.service'; @Component({ selector: 'app-contacts', @@ -40,7 +42,7 @@ export class ContactsComponent { @ViewChild(MatSort) sort!: MatSort; - displayedColumns: string[] = ['firstName', 'lastName', 'title', 'phone', 'mobile', 'email', 'actions']; + displayedColumns: string[] = ['firstName', 'middleInitial', 'lastName', 'title', 'phone', 'mobile', 'fax', 'email', 'actions']; dataSource = new MatTableDataSource(); contactForm: FormGroup; @@ -51,6 +53,8 @@ export class ContactsComponent { showForm = false; showInactiveContacts = false; contacts: Contact[] = []; + contactTitles: ContactTitle[] = []; + currentApplicationDetails: { headerid: number, applicationName: string } | null = null; returnTo: string = environment.appType === 'client' ? 'edit-carnet' : 'process-carnet'; @@ -60,9 +64,12 @@ export class ContactsComponent { isInactive: null, inactivatedDate: null }; + + private destroy$ = new Subject(); private fb = inject(FormBuilder); private dialog = inject(MatDialog); + private commonService = inject(CommonService); private contactService = inject(ContactService); private notificationService = inject(NotificationService); private errorHandler = inject(ApiErrorHandlerService); @@ -74,7 +81,7 @@ export class ContactsComponent { firstName: ['', [Validators.required, Validators.maxLength(50)]], lastName: ['', [Validators.required, Validators.maxLength(50)]], middleInitial: ['', [Validators.maxLength(1)]], - title: ['', [Validators.required, Validators.maxLength(100)]], + title: ['', [Validators.required]], phone: ['', [Validators.required, Validators.pattern(/^[0-9\-\(\)]{10,15}$/)]], mobile: ['', [Validators.required, Validators.pattern(/^[0-9\-\(\)]{10,15}$/)]], fax: ['', [Validators.pattern(/^[0-9\-\(\)]{10,15}$/)]], @@ -85,11 +92,17 @@ export class ContactsComponent { } ngOnInit(): void { + this.loadContactTitles(); if (this.holderid > 0) { this.loadContacts(); } } + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } + ngAfterViewInit() { this.dataSource.paginator = this.paginator; this.dataSource.sort = this.sort; @@ -113,6 +126,19 @@ export class ContactsComponent { }); } + loadContactTitles(): void { + this.commonService.getContactTitles() + .pipe(takeUntil(this.destroy$)) + .subscribe({ + next: (contactTitles) => { + this.contactTitles = contactTitles; + }, + error: (error) => { + console.error('Failed to load contact titles', error); + } + }); + } + addNewContact(): void { this.showForm = true; this.isEditing = false; @@ -260,4 +286,9 @@ export class ContactsComponent { } }) } + + getContactTitleLabel(value: string): string { + const type = this.contactTitles.find(t => t.value === value); + return type ? type.name : value; + } }