import { Kinosaal, Sitzplatz, Vorstellung, Film, OmdbSearch } 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/'; /* Kinosaal APIs */ /* GET /api/kinosaal */ getAllKinosaal(): Observable { return this.http.get(`${this.baseUrl}kinosaal`); } /* GET /api/kinosaal/{id} */ getKinosaalById(id: number): Observable { return this.http.get(`${this.baseUrl}kinosaal/${id}`); } /* POST /api/kinosaal */ addKinosaal(kinosaal: Omit): Observable { return this.http.post(`${this.baseUrl}kinosaal`, kinosaal); } /* PUT /api/kinosaal/{id} */ updateKinosaal(id: number, kinosaal: Partial): Observable { return this.http.put(`${this.baseUrl}kinosaal/${id}`, kinosaal); } /* DELETE /api/kinosaal/{id} */ deleteKinosaal(id: number): Observable { return this.http.delete(`${this.baseUrl}kinosaal/${id}`); } /* Vorstellung APIs */ /* GET /api/vorstellung */ getPerformaces(): Observable { return this.http.get(`${this.baseUrl}vorstellung`); } /* GET /api/vorstellung/{id} */ getPerformaceById(id: number): Observable { return this.http.get(`${this.baseUrl}vorstellung/${id}`); } /* POST /api/vorstellung/filter */ getPerformacesByFilter(filter: string[]): Observable { return this.http.post(`${this.baseUrl}vorstellung/filter`, filter); } /* POST /api/vorstellung */ addPerformace(vorstellung: Omit): Observable { return this.http.post(`${this.baseUrl}vorstellung`, vorstellung); } /* PUT /api/vorstellung/{id} */ updatePerformace(id: number, vorstellung: Partial): Observable { return this.http.put(`${this.baseUrl}vorstellung/${id}`, vorstellung); } /* DELETE /api/vorstellung/{id} */ deletePerformace(id: number): Observable { return this.http.delete(`${this.baseUrl}vorstellung/${id}`); } /* Film APIs */ /* GET /api/film */ getMovies(): Observable { return this.http.get(`${this.baseUrl}film`); } /* POST /api/vorstellung/filter */ getMoviesByFilter(filter: string[]): Observable { return this.http.post(`${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 { return this.http.get(`${this.baseUrl}importer/search`, { params: { title: query } }); } /* POST /api/importer/import */ importMovie(imdbId: string): Observable { return this.http.post(`${this.baseUrl}importer/import?id=${imdbId}`, {}) } }