53 lines
2.1 KiB
TypeScript
53 lines
2.1 KiB
TypeScript
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<User>(undefined);
|
|
currentUser = this.userSource.asObservable();
|
|
|
|
constructor(private http: HttpClient) {}
|
|
|
|
changeUser(user: User) {
|
|
this.userSource.next(user);
|
|
}
|
|
// -----------------------------
|
|
// DB services
|
|
// -----------------------------
|
|
async save(user: User): Promise<User> {
|
|
return await lastValueFrom(this.http.post<User>(`${this.apiBaseUrl}/bizmatch/user`, user));
|
|
}
|
|
async saveGuaranteed(user: User): Promise<User> {
|
|
return await lastValueFrom(this.http.post<User>(`${this.apiBaseUrl}/bizmatch/user/guaranteed`, user));
|
|
}
|
|
async getById(id: string): Promise<User> {
|
|
return await lastValueFrom(this.http.get<User>(`${this.apiBaseUrl}/bizmatch/user/${id}`));
|
|
}
|
|
async getByMail(mail: string, hideLoading: boolean = true): Promise<User> {
|
|
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<User>(url, { headers }));
|
|
}
|
|
async search(criteria?: UserListingCriteria): Promise<ResponseUsersArray> {
|
|
return await lastValueFrom(this.http.post<ResponseUsersArray>(`${this.apiBaseUrl}/bizmatch/user/search`, criteria));
|
|
}
|
|
getNumberOfBroker(criteria?: UserListingCriteria): Observable<number> {
|
|
return this.http.post<number>(`${this.apiBaseUrl}/bizmatch/user/findTotal`, criteria);
|
|
}
|
|
async getAllStates(): Promise<any> {
|
|
return await lastValueFrom(this.http.get<StatesResult[]>(`${this.apiBaseUrl}/bizmatch/user/states/all`));
|
|
}
|
|
}
|