basic booking load behavior

This commit is contained in:
Roland Schneider
2025-12-19 22:40:32 +01:00
parent 4e77578abf
commit e9943dae76
7 changed files with 17 additions and 8 deletions

View File

@@ -2,4 +2,4 @@
echo "workdir ${pwd}"
wget -O ./openapi/api.json localhost:3000/api-json
npx ng-openapi -c ./openapitools.json -i ./openapi/api.json -o ./src/api
npx ng-openapi -i ./openapi/api.json -o ./src/api

File diff suppressed because one or more lines are too long

View File

@@ -92,6 +92,7 @@ export interface BookingResponseDto {
notes?: string;
reservedSeatsCount: number;
canceledAt: string | null;
createdAt: string | null;
user: UserResponseDto;
}

View File

@@ -18,7 +18,7 @@
<tbody>
@for (booking of bookings.value()?.data; track booking) {
<tr>
<td>{{formatDateTime(booking.occurrenceStartTime)}}</td>
<td>{{formatDateTime(booking.createdAt)}}</td>
<td>{{booking.reservedSeatsCount}}</td>
<td><rs-daisy-button [variant]="'error'">
Lemondás

View File

@@ -74,7 +74,10 @@ export class SingleEventBookingList {
this.activePage.set($event);
}
formatDateTime( dateStr: string|Date){
formatDateTime( dateStr?: string|Date|null){
if ( !dateStr ){
return "";
}
return format(new Date(dateStr),'yyyy-MM-dd HH:mm');
}

View File

@@ -607,15 +607,16 @@ export class CalendarService {
eventId: number,
queryParams: CalendarGetBookingDto,
): Promise<CalenderControllerGetBookingResponse> {
console.info('getBookings', userId, eventId);
await Promise.resolve();
const { page = 1, limit = 0 } = queryParams;
// const { page = 1, limit = 0, sortBy, order } = queryParams;
// const { page = 1, limit = 0 } = queryParams;
const { page = 1, limit = 0, order } = queryParams;
const findOptions: FindManyOptions<Booking> = {
where: {
eventId: eventId,
occurrenceStartTime: queryParams.startTime,
},
order: {
['createdAt']: order!,
},
};
const paginated = limit > 0;
const [data, totalItems] =

View File

@@ -22,6 +22,9 @@ export class BookingResponseDto {
@ApiProperty({ nullable: true })
canceledAt?: string;
@ApiProperty({ nullable: true })
createdAt?: string; // ISO String for the client
// Flattened User Info (Avoid sending the whole User object)
@ApiProperty({
nullable: true,
@@ -36,6 +39,7 @@ export class BookingResponseDto {
this.notes = booking.notes;
this.reservedSeatsCount = booking.reservedSeatsCount;
this.canceledAt = booking.canceledAt?.toISOString() || undefined;
this.createdAt = booking.createdAt?.toISOString() || undefined;
// Safety check: Only map user if relation is loaded
if (booking.user) {