import {inject, Injectable, signal, WritableSignal} from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {catchError, map, of} from 'rxjs'; import {environment} from '../../environments/environment'; import {MintResponse} from '../../models/response/mint-response'; import {Endpoints} from '../../models/endpoints'; import {AddTicket} from '../../models/request/add-ticket'; import {ApiUtils} from './api-utils'; import {TicketSearch} from '../../models/response/ticket-search'; import {SnackbarService} from './snackbar.service'; @Injectable({ providedIn: 'root' }) export class TicketService extends ApiUtils { public dataSignal$: WritableSignal = signal(''); private httpClient = inject(HttpClient); private snackbar = inject(SnackbarService); constructor() { super(); } public addTicket(request: AddTicket): void { const options = this.setHttpRequestOptions(); const url = environment.apiBase + Endpoints.TICKET; this.httpClient.post(url, JSON.stringify(request), options) .pipe( map((response: any) => response.body), catchError(error => { this.snackbar.showError(error.error); return of(undefined); }) ).subscribe((res: MintResponse) => { if (res !== undefined) { this.dataSignal$.set(res.qrCode); } }); } }