Files
bizmatch-project/bizmatch/src/app/services/user.service.ts

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`));
}
}