This commit is contained in:
2024-11-27 11:40:43 +01:00
parent 53e7db435c
commit 95fe01ad86
51 changed files with 4175 additions and 456 deletions

View File

@@ -0,0 +1,88 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams, HttpErrorResponse } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, tap } from 'rxjs/operators';
import { AvisoDto } from './aviso.dto'; // Importiere das Interface
import { AvisoTvSettingsDto } from './aviso-tv-settings.dto'; // Importiere das neue Interface
// Definiere die Response Interfaces
export interface AvisoArrivalsResponse {
avisos: AvisoDto[];
totalCount: number;
}
@Injectable({
providedIn: 'root'
})
export class AvisoService {
private baseUrl = 'https://localhost:7063/api/Aviso';
constructor(private http: HttpClient) { }
/**
* Holt die Ankünfte (Arrivals) basierend auf den übergebenen Parametern.
* @param standort Standort zur Filterung der Ankünfte.
* @param seiten Gibt an, ob nur Seiten zurückgegeben werden sollen.
* @param onlyOK Gibt an, ob nur gültige Ankünfte zurückgegeben werden sollen.
* @returns Ein Observable von AvisoArrivalsResponse.
*/
getArrivals(standort: string, seiten: boolean = false, onlyOK: boolean = false): Observable<AvisoArrivalsResponse> {
let params = new HttpParams()
.set('standort', standort)
.set('seiten', seiten.toString())
.set('onlyOK', onlyOK.toString());
return this.http.get<AvisoArrivalsResponse>(`${this.baseUrl}/arrivals`, { params })
.pipe(
tap(data => console.log('AvisoService received arrivals data:', data)), // Logge die empfangenen Daten
catchError(this.handleError)
);
}
/**
* Holt die Aviso TV Einstellungen basierend auf dem übergebenen Standort.
* @param standort Standort zur Filterung der Einstellungen.
* @returns Ein Observable von AvisoTvSettingsDto[].
*/
getAvisoTvSettings(standort: string): Observable<AvisoTvSettingsDto[]> {
return this.http.get<AvisoTvSettingsDto[]>(`${this.baseUrl}/${standort}`)
.pipe(
tap(data => console.log('AvisoService received TV settings data:', data)), // Logge die empfangenen Daten
catchError(this.handleError)
);
}
/**
* Holt die bereitstehenden Avisos basierend auf dem übergebenen Standort.
* @param standort Standort zur Filterung der bereitstehenden Avisos.
* @returns Ein Observable von AvisoDto[].
*/
getReadyAvisos(standort: string = ''): Observable<AvisoDto[]> {
let params = new HttpParams().set('standort', standort);
return this.http.get<AvisoDto[]>(`${this.baseUrl}/ready`, { params })
.pipe(
tap(data => console.log('AvisoService received ready avisos:', data)), // Logge die empfangenen Daten
catchError(this.handleError)
);
}
/**
* Behandelt Fehler, die während HTTP-Anfragen auftreten.
* @param error Das aufgetretene HttpErrorResponse-Objekt.
* @returns Ein Observable, das einen Fehler auswirft.
*/
private handleError(error: HttpErrorResponse) {
let errorMessage = 'Unbekannter Fehler!';
if (error.error instanceof ErrorEvent) {
// Client-seitiger Fehler
errorMessage = `Fehler: ${error.error.message}`;
} else {
// Server-seitiger Fehler
errorMessage = `Server returned code: ${error.status}, error message is: ${error.message}`;
}
return throwError(errorMessage);
}
}