ticket-system/source/ticketUI/src/app/services/ticket.service.ts
Tara Wilson cb433ba390 Refactoring
Building out UI
Building out API
Fixing Bugs
2024-12-06 17:23:23 -05:00

42 lines
1.3 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 {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<string> = 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<MintResponse>(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);
}
});
}
}