import { inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { lastValueFrom, map } from 'rxjs'; import { handleRequest } from '../helpers/http'; import { CreateUser, ScannedUser, SearchedUser } from '../models/auth.models'; import { HttpResponse } from '../models/response.interface'; @Injectable({ providedIn: 'root', }) export class StaffService { private http = inject(HttpClient); async searchUsers(search: string) { const params = new URLSearchParams(); params.set('search', search); const { data } = await handleRequest( this.http.get>(`users/list?${params.toString()}`) ); return data; } getUserBadgeByCode(code: string) { return lastValueFrom(this.http.get(`users/pdf_id/qr/${code}`, { responseType: 'blob' })); } getUserBadgeById(id: number) { return lastValueFrom(this.http.get(`users/pdf_id/id/${id}`, { responseType: 'blob' })); } async createUser(user: Partial) { const request = this.http.post>( `auth/register/by_frontdesk`, user ); const { data } = await handleRequest(request); return data; } // QR Scanner related getCurrentQuorum() { return this.http .get>(`users/scann/current_quorum`) .pipe(map((res) => res.data.current_quorum)); } async scanUserCode(qrcodedata: string) { const request = this.http.post>( `users/scann/access/${qrcodedata}`, {} ); const { data } = await handleRequest(request); return { ...data, qrcodedata }; } } export const injectStaffService = () => inject(StaffService);