Files
frontend/src/app/http.service.ts
2025-11-18 14:01:00 +01:00

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