import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable, lastValueFrom } from 'rxjs'; import { environment } from '../../environments/environment'; import { BusinessListing, ImageProperty, ListingCriteria, ListingType } from '../../../../common-models/src/main.model'; import onChange from 'on-change'; import { getSessionStorageHandler } from '../utils/utils'; @Injectable({ providedIn: 'root' }) export class ListingsService { private apiBaseUrl = environment.apiBaseUrl; constructor(private http: HttpClient) { } // getAllListings():Observable{ // return this.http.get(`${this.apiBaseUrl}/bizmatch/business-listings`); // } async getListings(criteria:ListingCriteria):Promise{ const result = await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/listings/${criteria.listingsCategory}/search`,criteria)); return result; } getListingById(id:string,listingsCategory?:'business'|'commercialProperty'):Observable{ return this.http.get(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/${id}`); } getListingByUserId(userid:string):Promise{ return lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/listings/business/user/${userid}`)); } async save(listing:any,listingsCategory:'business'|'professionals_brokers'|'commercialProperty'){ await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}`,listing)); } async deleteListing(id:string,listingsCategory:'business'|'professionals_brokers'|'commercialProperty'){ await lastValueFrom(this.http.delete(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/${id}`)); } async getPropertyImages(id:string):Promise{ return await lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/image/${id}`)); } }