40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
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 {MintRequest} from '../../models/request/mint-request';
|
|
import {ApiUtils} from './api-utils';
|
|
import {TicketSearch} from '../../models/response/ticket-search';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class TicketService extends ApiUtils {
|
|
public dataSignal$: WritableSignal<string> = signal('');
|
|
private httpClient = inject(HttpClient);
|
|
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
public addTicket(request: MintRequest): void {
|
|
const options = this.setHttpRequestOptions();
|
|
const url = environment.apiBase + Endpoints.TICKET;
|
|
|
|
this.httpClient.post<MintResponse>(url, JSON.stringify(request), options)
|
|
.pipe(
|
|
map((response: any) => response.body),
|
|
catchError(error => {
|
|
console.log(error);
|
|
return of(undefined);
|
|
})
|
|
).subscribe((res: MintResponse) => {
|
|
if (res !== undefined) {
|
|
this.dataSignal$.set(res.qrCode);
|
|
}
|
|
});
|
|
}
|
|
}
|