import { inject, Injectable } from '@angular/core'; import { UserService } from '../common/user.service'; import { HttpClient } from '@angular/common/http'; import { environment } from '../../../../environments/environment'; import { map, Observable, of } from 'rxjs'; import { Contact } from '../../models/holder/contact'; @Injectable({ providedIn: 'root' }) export class ContactService { private apiUrl = environment.apiUrl; private apiDb = environment.apiDb; private http = inject(HttpClient); private userService = inject(UserService); getContactsById(id: number): Observable { return this.http.get(`${this.apiUrl}/${this.apiDb}/GetHolderContacts/${this.userService.getUserSpid()}/${id}`).pipe( map(response => this.mapToContacts(response))); } private mapToContacts(data: any[]): Contact[] { return data.map(contact => ({ holdercontactid: contact.HOLDERCONTACTID, holderid: contact.HOLDERID, spid: contact.SPID, firstName: contact.FIRSTNAME, lastName: contact.LASTNAME, middleInitial: contact.MIDDLEINITIAL || null, title: contact.TITLE, phone: contact.PHONE, mobile: contact.MOBILE, fax: contact.FAX || null, email: contact.EMAILADDRESS, createdBy: contact.CREATEDBY || null, dateCreated: contact.DATECREATED || null, lastUpdatedBy: contact.LASTUPDATEDBY || null, lastUpdatedDate: contact.LASTUPDATEDDATE || null, isInactive: contact.INACTIVEFLAG === 'Y' || false, inactivatedDate: contact.INACTIVEDATE || null })); } createContact(holderid: number, data: Contact): Observable { const contact = { P_SPID: this.userService.getUserSpid(), P_HOLDERID: holderid, P_CONTACTSTABLE: [{ P_FIRSTNAME: data.firstName, P_LASTNAME: data.lastName, P_MIDDLEINITIAL: data.middleInitial, P_TITLE: data.title, P_EMAILADDRESS: data.email, P_MOBILENO: data.mobile, P_PHONENO: data.phone, P_FAXNO: data.fax }], P_USERID: this.userService.getUser() } return this.http.post(`${this.apiUrl}/${this.apiDb}/CreateHoldercontact`, contact); } updateContact(holdercontactid: number, data: Contact): Observable { const contact = { P_HOLDERCONTACTID: holdercontactid, P_SPID: this.userService.getUserSpid(), P_FIRSTNAME: data.firstName, P_LASTNAME: data.lastName, P_MIDDLEINITIAL: data.middleInitial, P_TITLE: data.title, P_EMAILADDRESS: data.email, P_MOBILENO: data.mobile, P_PHONENO: data.phone, P_FAXNO: data.fax, P_USERID: this.userService.getUser() } return this.http.put(`${this.apiUrl}/${this.apiDb}/UpdateHolderContact`, contact); } inactivateHolderContact(holdercontactid: number) { return this.http.patch(`${this.apiUrl}/${this.apiDb}/InactivateHolderContact/${this.userService.getUserSpid()}/${holdercontactid}/${this.userService.getSafeUser()}`, {}); } reactivateHolderContact(holdercontactid: number) { return this.http.patch(`${this.apiUrl}/${this.apiDb}/ReactivateHolderContact/${this.userService.getUserSpid()}/${holdercontactid}/${this.userService.getSafeUser()}`, {}); } }