80 lines
2.6 KiB
TypeScript
80 lines
2.6 KiB
TypeScript
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<Location[]> {
|
|
return this.http.get<any[]>(`${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<any> {
|
|
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<any> {
|
|
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);
|
|
}
|
|
}
|