diff --git a/src/app/http.service.ts b/src/app/http.service.ts index 91dca64..2429917 100644 --- a/src/app/http.service.ts +++ b/src/app/http.service.ts @@ -51,6 +51,11 @@ export class HttpService { return this.http.get(`${this.baseUrl}vorstellung/${id}`); } + /* POST /api/vorstellung/filter */ + getPerformaceByFilter(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); @@ -67,7 +72,7 @@ export class HttpService { } - /* Vorstellung APIs */ + /* Film APIs */ /* GET /api/film */ getMovies(): Observable { diff --git a/src/app/schedule/schedule.component.ts b/src/app/schedule/schedule.component.ts index 88482f3..aae539d 100644 --- a/src/app/schedule/schedule.component.ts +++ b/src/app/schedule/schedule.component.ts @@ -18,15 +18,17 @@ export class ScheduleComponent implements OnInit { movieSearchResult: string = ''; + private readonly bookableDays: number = 14; + private http = inject(HttpService); private loading = inject(LoadingService) constructor() { - this.generateDates(); + this.generateDates(this.bookableDays); } ngOnInit() { - this.loadPerformances(); + this.loadPerformances(this.bookableDays); } hasSearchResults(dateIndex: number): boolean { @@ -37,9 +39,9 @@ export class ScheduleComponent implements OnInit { ); } - generateDates() { + generateDates(bookableDays: number) { const today = new Date(); - for (let i = 0; i < 14; i++) { + for (let i = 0; i < bookableDays; i++) { const date = new Date(today); date.setDate(today.getDate() + i); @@ -56,9 +58,10 @@ export class ScheduleComponent implements OnInit { } } - loadPerformances() { + loadPerformances(bookableDays: number) { this.loading.show(); - this.http.getPerformaces().pipe( + const filter = this.generateDateFilter(bookableDays); + this.http.getPerformaceByFilter(filter).pipe( map(data => Array.isArray(data) ? data : [data]), tap(performaces => { this.performaces = performaces; @@ -67,12 +70,27 @@ export class ScheduleComponent implements OnInit { }), catchError(err => { this.loading.showError(err); - console.error('Fehler beim Laden der Vorstellung', err); + console.error('Fehler beim Laden der Vorstellungen', err); return of([]); }) ).subscribe(); } +private generateDateFilter(bookableDays: number): string[] { + const startDate = new Date(); + const endDate = new Date(); + endDate.setDate(startDate.getDate() + bookableDays - 1); + + const startStr = startDate.toISOString().split('T')[0] + 'T00:00:00'; + const endStr = endDate.toISOString().split('T')[0] + 'T23:59:59'; + + return [ + `ge;start;date;${startStr}`, + `le;start;date;${endStr}`, + ]; +} + + assignPerformancesToDates() { // Gruppieren nach Datum