course creation

This commit is contained in:
OnlyPapy98
2025-12-19 18:00:50 +01:00
parent dde2e8aebf
commit 169b5ca412
39 changed files with 1250 additions and 2258 deletions

View File

@@ -25,7 +25,7 @@ interface ReunionApiResponse {
}
const USE_SERVER = true;
const API_BASE = '/api/v1/reunions';
const API_BASE = '/api/reunions';
@Injectable({ providedIn: 'root' })
export class ReunionService {
@@ -49,7 +49,7 @@ export class ReunionService {
list(
params: ListParams,
usePaginationEndpoint: boolean = false
usePaginationEndpoint: boolean = true
): Observable<PagedResult<Reunion>> {
if (USE_SERVER) {
if (usePaginationEndpoint) {
@@ -61,30 +61,28 @@ export class ReunionService {
.pipe(
switchMap((pagedResult) => {
// Handle empty data case
if (!pagedResult.data || pagedResult.data.length === 0) {
if (!pagedResult.content || pagedResult.content.length === 0) {
return of({
...pagedResult,
data: [],
meta: {
...pagedResult.meta,
uniqueHippodromes: 0,
content: [],
pageable: {
...pagedResult.pageable,
},
});
}
});
}
// Extract unique hippodrome IDs from the paginated data
const uniqueHippodromeIds = [
...new Set(pagedResult.data.map((r) => String(r.hippodromeId))),
...new Set(pagedResult.content.map((r) => String(r.hippodromeId))),
];
// Handle case where there are no unique IDs
if (uniqueHippodromeIds.length === 0) {
return of({
...pagedResult,
data: [],
meta: {
...pagedResult.meta,
uniqueHippodromes: 0,
content: [],
pageable: {
...pagedResult.pageable,
},
});
}
@@ -93,12 +91,12 @@ export class ReunionService {
const hippodromeRequests = uniqueHippodromeIds.map((id) =>
this.hippodromeService
.getById(id)
.pipe(catchError(() => of<Hippodrome | undefined>(undefined)))
.pipe(catchError(() => of<Hippodrome>()))
);
// Fetch courses to calculate counts per reunion
const coursesRequest = this.http
.get<any[]>(`${environment.apiBaseUrl}/api/v1/courses`, {
.get<any[]>(`${environment.apiBaseUrl}/api/courses`, {
headers: this.getNgrokHeaders(),
})
.pipe(
@@ -133,7 +131,7 @@ export class ReunionService {
});
// Transform API responses to Reunion objects
const transformedData: Reunion[] = pagedResult.data
const transformedData: Reunion[] = pagedResult.content
.map((apiReunion) => {
const hippodrome = hippodromeMap.get(String(apiReunion.hippodromeId));
if (!hippodrome) {
@@ -155,19 +153,10 @@ export class ReunionService {
} as Reunion;
})
.filter((r): r is Reunion => r !== null && r !== undefined);
// Calculate unique hippodromes count
const uniqueHippodromes = new Set(transformedData.map((r) => r.hippodrome.id))
.size;
return {
...pagedResult,
data: transformedData,
meta: {
...pagedResult.meta,
uniqueHippodromes,
},
};
return {
...pagedResult,
content: transformedData,
}
})
);
}),