Add performance filtering by date range
Introduces a new API method in HttpService to fetch performances by a date filter. ScheduleComponent now generates a date filter for the next 14 days and loads performances using the new filtered endpoint, improving flexibility for bookable days.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user