ticket-system/source/ticketUI/src/app/services/ticket.service.ts
2024-12-05 20:27:49 -05:00

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