import { inject, Injectable } from '@angular/core'; import { environment } from '../../../../environments/environment'; import { HttpClient } from '@angular/common/http'; import { UserService } from '../common/user.service'; import { map, Observable } from 'rxjs'; import { Location } from '../../models/preparer/location'; @Injectable({ providedIn: 'root' }) export class LocationService { private apiUrl = environment.apiUrl; private apiDb = environment.apiDb; private http = inject(HttpClient); private userService = inject(UserService); getLocationsById(id: number): Observable { return this.http.get(`${this.apiUrl}/${this.apiDb}/GetPreparerLocByClientid/${this.userService.getUserSpid()}/${id}`).pipe( map(response => this.mapToLocations(response))); } private mapToLocations(data: any[]): Location[] { return data.map(location => ({ locationid: location.LOCATIONID, spid: location.SPID, clientid: location.CLIENTID, name: location.NAMEOF, address1: location.ADDRESS1, address2: location.ADDRESS2, city: location.CITY, state: location.STATE, country: location.COUNTRY, zip: location.ZIP, createdBy: location.CREATEDBY || null, dateCreated: location.DATECREATED || null, lastUpdatedBy: location.LASTUPDATEDBY || null, lastUpdatedDate: location.LASTUPDATEDDATE || null, isInactive: location.INACTIVEFLAG === 'Y' || false, inactivatedDate: location.INACTIVEDATE || null })); } createLocation(clientid: number, data: Location): Observable { const location = { P_SPID: this.userService.getUserSpid(), P_CLIENTID: clientid, P_CLIENTLOCADDRESSTABLE: [{ P_NAMEOF: data.name, P_ADDRESS1: data.address1, P_ADDRESS2: data.address2, P_CITY: data.city, P_STATE: data.state, P_COUNTRY: data.country, P_ZIP: data.zip, }], P_USERID: this.userService.getUser() } return this.http.post(`${this.apiUrl}/${this.apiDb}/CreateClientLocations`, location); } updateLocation(locationId: number, data: Location): Observable { const location = { P_SPID: this.userService.getUserSpid(), P_CLIENTLOCATIONID: locationId, P_LOCATIONNAME: data.name, P_ADDRESS1: data.address1, P_ADDRESS2: data.address2, P_CITY: data.city, P_STATE: data.state, P_COUNTRY: data.country, P_ZIP: data.zip, P_USERID: this.userService.getUser() } return this.http.put(`${this.apiUrl}/${this.apiDb}/UpdateClientLocations`, location); } }