197 lines
5.8 KiB
TypeScript
197 lines
5.8 KiB
TypeScript
import {
|
|
Kinosaal,
|
|
Sitzplatz,
|
|
Vorstellung,
|
|
Film,
|
|
OmdbSearch,
|
|
Bestellung,
|
|
Eintrittskarte,
|
|
StatisticsReduced, StatisticsFilm
|
|
} from '@infinimotion/model-frontend';
|
|
import { HttpClient } from "@angular/common/http";
|
|
import { inject, Injectable } from "@angular/core";
|
|
import { Observable } from "rxjs";
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class HttpService {
|
|
private http = inject(HttpClient);
|
|
private baseUrl = 'https://infinimotion.de/api/';
|
|
|
|
|
|
/* Bestellung APIs */
|
|
|
|
/* GET /api/bestellung/{id} */
|
|
getAllOrder(id: number): Observable<Bestellung[]> {
|
|
return this.http.get<Bestellung[]>(`${this.baseUrl}bestellung`);
|
|
}
|
|
|
|
/* GET /api/bestellung/{id} */
|
|
getOrderById(id: number): Observable<Bestellung> {
|
|
return this.http.get<Bestellung>(`${this.baseUrl}bestellung/${id}`);
|
|
}
|
|
|
|
/* POST /api/bestellung/filter */
|
|
getOrdersByFilter(filter: string[]): Observable<Bestellung[]> {
|
|
return this.http.post<Bestellung[]>(`${this.baseUrl}bestellung/filter`, filter);
|
|
}
|
|
|
|
/* POST /api/bestellung */
|
|
addOrder(order: Omit<Bestellung, 'id'>): Observable<Bestellung> {
|
|
return this.http.post<Bestellung>(`${this.baseUrl}bestellung`, order);
|
|
}
|
|
|
|
/* PUT /api/bestellung/{id} */
|
|
updateOrder(id: number, order: Partial<Bestellung>): Observable<Bestellung> {
|
|
return this.http.put<Bestellung>(`${this.baseUrl}bestellung/${id}`, order);
|
|
}
|
|
|
|
/* DELETE /api/bestellung/{id} */
|
|
deleteOrder(id: number): Observable<void> {
|
|
return this.http.delete<void>(`${this.baseUrl}bestellung/${id}`);
|
|
}
|
|
|
|
|
|
/* Eintrittskarte APIs */
|
|
|
|
/* GET /api/eintrittskarte/{id} */
|
|
getAllTickets(id: number): Observable<Eintrittskarte[]> {
|
|
return this.http.get<Eintrittskarte[]>(`${this.baseUrl}eintrittskarte`);
|
|
}
|
|
|
|
/* GET /api/eintrittskarte/{id} */
|
|
getTicketById(id: number): Observable<Eintrittskarte> {
|
|
return this.http.get<Eintrittskarte>(`${this.baseUrl}eintrittskarte/${id}`);
|
|
}
|
|
|
|
/* POST /api/eintrittskarte/filter */
|
|
getTicketsByFilter(filter: string[]): Observable<Eintrittskarte[]> {
|
|
return this.http.post<Eintrittskarte[]>(`${this.baseUrl}eintrittskarte/filter`, filter);
|
|
}
|
|
|
|
/* POST /api/eintrittskarte */
|
|
addTicket(order: Omit<Eintrittskarte, 'id'>): Observable<Eintrittskarte> {
|
|
return this.http.post<Eintrittskarte>(`${this.baseUrl}eintrittskarte`, order);
|
|
}
|
|
|
|
/* PUT /api/eintrittskarte/{id} */
|
|
updateTicket(id: number, order: Partial<Eintrittskarte>): Observable<Eintrittskarte> {
|
|
return this.http.put<Eintrittskarte>(`${this.baseUrl}eintrittskarte/${id}`, order);
|
|
}
|
|
|
|
/* DELETE /api/eintrittskarte/{id} */
|
|
deleteTicket(id: number): Observable<void> {
|
|
return this.http.delete<void>(`${this.baseUrl}eintrittskarte/${id}`);
|
|
}
|
|
|
|
|
|
/* Kinosaal APIs */
|
|
|
|
/* GET /api/kinosaal */
|
|
getAllKinosaal(): Observable<Kinosaal[]> {
|
|
return this.http.get<Kinosaal[]>(`${this.baseUrl}kinosaal`);
|
|
}
|
|
|
|
/* GET /api/kinosaal/{id} */
|
|
getKinosaalById(id: number): Observable<Kinosaal> {
|
|
return this.http.get<Kinosaal>(`${this.baseUrl}kinosaal/${id}`);
|
|
}
|
|
|
|
/* POST /api/kinosaal */
|
|
addKinosaal(kinosaal: Omit<Kinosaal, 'id'>): Observable<Kinosaal> {
|
|
return this.http.post<Kinosaal>(`${this.baseUrl}kinosaal`, kinosaal);
|
|
}
|
|
|
|
/* PUT /api/kinosaal/{id} */
|
|
updateKinosaal(id: number, kinosaal: Partial<Kinosaal>): Observable<Kinosaal> {
|
|
return this.http.put<Kinosaal>(`${this.baseUrl}kinosaal/${id}`, kinosaal);
|
|
}
|
|
|
|
/* DELETE /api/kinosaal/{id} */
|
|
deleteKinosaal(id: number): Observable<void> {
|
|
return this.http.delete<void>(`${this.baseUrl}kinosaal/${id}`);
|
|
}
|
|
|
|
|
|
/* Vorstellung APIs */
|
|
|
|
/* GET /api/vorstellung */
|
|
getAllPerformaces(): Observable<Vorstellung[]> {
|
|
return this.http.get<Vorstellung[]>(`${this.baseUrl}vorstellung`);
|
|
}
|
|
|
|
/* GET /api/vorstellung/{id} */
|
|
getPerformaceById(id: number): Observable<Vorstellung> {
|
|
return this.http.get<Vorstellung>(`${this.baseUrl}vorstellung/${id}`);
|
|
}
|
|
|
|
/* POST /api/vorstellung/filter */
|
|
getPerformacesByFilter(filter: string[]): Observable<Vorstellung[]> {
|
|
return this.http.post<Vorstellung[]>(`${this.baseUrl}vorstellung/filter`, filter);
|
|
}
|
|
|
|
/* POST /api/vorstellung */
|
|
addPerformace(vorstellung: Omit<Vorstellung, 'id'>): Observable<Vorstellung> {
|
|
return this.http.post<Vorstellung>(`${this.baseUrl}vorstellung`, vorstellung);
|
|
}
|
|
|
|
/* PUT /api/vorstellung/{id} */
|
|
updatePerformace(id: number, vorstellung: Partial<Vorstellung>): Observable<Vorstellung> {
|
|
return this.http.put<Vorstellung>(`${this.baseUrl}vorstellung/${id}`, vorstellung);
|
|
}
|
|
|
|
/* DELETE /api/vorstellung/{id} */
|
|
deletePerformace(id: number): Observable<void> {
|
|
return this.http.delete<void>(`${this.baseUrl}vorstellung/${id}`);
|
|
}
|
|
|
|
|
|
/* Film APIs */
|
|
|
|
/* GET /api/film */
|
|
getMovies(): Observable<Film[]> {
|
|
return this.http.get<Film[]>(`${this.baseUrl}film`);
|
|
}
|
|
|
|
/* POST /api/vorstellung/filter */
|
|
getMoviesByFilter(filter: string[]): Observable<Film[]> {
|
|
return this.http.post<Film[]>(`${this.baseUrl}film/filter`, filter);
|
|
}
|
|
|
|
|
|
/* Show-Seats APIs */
|
|
|
|
/* GET /api/show-seats/{show} */
|
|
getSeatsByShowId(show: number): Observable<{ seats: Sitzplatz[], reserved: Sitzplatz[], booked: Sitzplatz[] }> {
|
|
return this.http.get<{
|
|
seats: Sitzplatz[],
|
|
reserved: Sitzplatz[],
|
|
booked: Sitzplatz[]
|
|
}>(`${this.baseUrl}show-seats/${show}`);
|
|
}
|
|
|
|
|
|
/* Movie Importer APIs */
|
|
|
|
/* GET /api/importer/search */
|
|
searchMovie(query: string): Observable<OmdbSearch> {
|
|
return this.http.get<OmdbSearch>(`${this.baseUrl}importer/search`, {
|
|
params: {title: query}
|
|
});
|
|
}
|
|
|
|
/* POST /api/importer/import */
|
|
importMovie(imdbId: string): Observable<Film> {
|
|
return this.http.post<Film>(`${this.baseUrl}importer/import?id=${imdbId}`, {})
|
|
}
|
|
|
|
|
|
/* Statistics APIs */
|
|
|
|
/* GET /api/statistics/list */
|
|
getStatisticsList(): Observable<StatisticsReduced> {
|
|
return this.http.get<StatisticsReduced>(`${this.baseUrl}statistics/list`)
|
|
}
|
|
}
|