diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts index d9364f69d5..a8ef67f965 100644 --- a/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts +++ b/apps/api/v2/src/ee/bookings/2024-08-13/controllers/e2e/user-bookings.e2e-spec.ts @@ -167,6 +167,7 @@ describe("Bookings Endpoints 2024-08-13", () => { timeZone: "Europe/Rome", }, }, + rating: 10, }); app = moduleRef.createNestApplication(); @@ -552,6 +553,30 @@ describe("Bookings Endpoints 2024-08-13", () => { }); }); + it("should should get a booking with rating", async () => { + return request(app.getHttpServer()) + .get(`/v2/bookings/${bookingInThePast.uid}`) + .set(CAL_API_VERSION_HEADER, VERSION_2024_08_13) + .expect(200) + .then(async (response) => { + const responseBody: GetBookingOutput_2024_08_13 = response.body; + expect(responseBody.status).toEqual(SUCCESS_STATUS); + expect(responseBody.data).toBeDefined(); + expect(responseDataIsBooking(responseBody.data)).toBe(true); + + if (responseDataIsBooking(responseBody.data)) { + const data: BookingOutput_2024_08_13 = responseBody.data; + expect(data.id).toEqual(bookingInThePast.id); + expect(data.uid).toEqual(bookingInThePast.uid); + expect(data.rating).toEqual(bookingInThePast.rating); + } else { + throw new Error( + "Invalid response data - expected booking but received array of possibily recurring bookings" + ); + } + }); + }); + it("should should get 1 recurrence of a recurring booking", async () => { const recurrenceUid = createdRecurringBooking[0].uid; return request(app.getHttpServer()) diff --git a/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts b/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts index 1181668475..99456ea4e3 100644 --- a/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts +++ b/apps/api/v2/src/ee/bookings/2024-08-13/services/output.service.ts @@ -133,6 +133,7 @@ export class OutputBookingsService_2024_08_13 { absentHost: !!databaseBooking.noShowHost, createdAt: databaseBooking.createdAt, updatedAt: databaseBooking.updatedAt, + rating: databaseBooking.rating, }; const bookingTransformed = plainToClass(BookingOutput_2024_08_13, booking, { strategy: "excludeAll" }); @@ -227,6 +228,7 @@ export class OutputBookingsService_2024_08_13 { bookingFieldsResponses: databaseBooking.responses, createdAt: databaseBooking.createdAt, updatedAt: databaseBooking.updatedAt, + rating: databaseBooking.rating, }; const bookingTransformed = plainToClass(RecurringBookingOutput_2024_08_13, booking, { @@ -274,6 +276,7 @@ export class OutputBookingsService_2024_08_13 { absentHost: !!databaseBooking.noShowHost, createdAt: databaseBooking.createdAt, updatedAt: databaseBooking.updatedAt, + rating: databaseBooking.rating, }; const parsed = plainToClass(GetSeatedBookingOutput_2024_08_13, booking, { strategy: "excludeAll" }); @@ -380,6 +383,7 @@ export class OutputBookingsService_2024_08_13 { absentHost: !!databaseBooking.noShowHost, createdAt: databaseBooking.createdAt, updatedAt: databaseBooking.updatedAt, + rating: databaseBooking.rating, }; const parsed = plainToClass(GetRecurringSeatedBookingOutput_2024_08_13, booking, { diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json index 85ec2d01e8..cd53b6c371 100644 --- a/apps/api/v2/swagger/documentation.json +++ b/apps/api/v2/swagger/documentation.json @@ -15376,6 +15376,10 @@ "key": "value" } }, + "rating": { + "type": "number", + "example": 4 + }, "attendees": { "type": "array", "items": { @@ -15524,6 +15528,10 @@ "key": "value" } }, + "rating": { + "type": "number", + "example": 4 + }, "attendees": { "type": "array", "items": { @@ -15775,6 +15783,10 @@ "key": "value" } }, + "rating": { + "type": "number", + "example": 4 + }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" @@ -15910,6 +15922,10 @@ "key": "value" } }, + "rating": { + "type": "number", + "example": 4 + }, "seatUid": { "type": "string", "example": "3be561a9-31f1-4b8e-aefc-9d9a085f0dd1" @@ -16090,6 +16106,10 @@ "key": "value" } }, + "rating": { + "type": "number", + "example": 4 + }, "attendees": { "type": "array", "items": { @@ -16220,6 +16240,10 @@ "key": "value" } }, + "rating": { + "type": "number", + "example": 4 + }, "attendees": { "type": "array", "items": { diff --git a/packages/platform/types/bookings/2024-08-13/outputs/booking.output.ts b/packages/platform/types/bookings/2024-08-13/outputs/booking.output.ts index 7078a6a5c0..c449299f4e 100644 --- a/packages/platform/types/bookings/2024-08-13/outputs/booking.output.ts +++ b/packages/platform/types/bookings/2024-08-13/outputs/booking.output.ts @@ -249,6 +249,12 @@ class BaseBookingOutput_2024_08_13 { @IsOptional() @Expose() metadata?: Record; + + @ApiPropertyOptional({ type: Number, example: 4 }) + @IsInt() + @IsOptional() + @Expose() + rating?: number; } export class BookingOutput_2024_08_13 extends BaseBookingOutput_2024_08_13 {