import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { BehaviorSubject, lastValueFrom, Observable } from 'rxjs'; import urlcat from 'urlcat'; import { User } from '../../../../bizmatch-server/src/models/db.model'; import { ResponseUsersArray, StatesResult, UserListingCriteria } from '../../../../bizmatch-server/src/models/main.model'; import { environment } from '../../environments/environment'; @Injectable({ providedIn: 'root', }) export class UserService { private apiBaseUrl = environment.apiBaseUrl; private userSource = new BehaviorSubject(undefined); currentUser = this.userSource.asObservable(); constructor(private http: HttpClient) {} changeUser(user: User) { this.userSource.next(user); } // ----------------------------- // DB services // ----------------------------- async save(user: User): Promise { return await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/user`, user)); } async saveGuaranteed(user: User): Promise { return await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/user/guaranteed`, user)); } async getById(id: string): Promise { return await lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/user/${id}`)); } async getByMail(mail: string, hideLoading: boolean = true): Promise { const url = urlcat(`${this.apiBaseUrl}/bizmatch/user`, { mail }); let headers = new HttpHeaders(); if (hideLoading) { headers = headers.set('X-Hide-Loading', 'true'); } return await lastValueFrom(this.http.get(url, { headers })); } async search(criteria?: UserListingCriteria): Promise { return await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/user/search`, criteria)); } getNumberOfBroker(criteria?: UserListingCriteria): Observable { return this.http.post(`${this.apiBaseUrl}/bizmatch/user/findTotal`, criteria); } async getAllStates(): Promise { return await lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/user/states/all`)); } }