diff --git a/server/src/calendar/calendar.controller.ts b/server/src/calendar/calendar.controller.ts index e66ea41..ec84105 100644 --- a/server/src/calendar/calendar.controller.ts +++ b/server/src/calendar/calendar.controller.ts @@ -94,12 +94,16 @@ export class CalendarController { } // Cancel a specific booking (soft delete) + @ApiCreatedResponse({ type: CalenderControllerGetBookingResponse }) @Patch('bookings/:bookingId/cancel') cancelBooking( + @User() user: types.AppUser, @Param('bookingId', ParseIntPipe) bookingId: number, @Body() cancelBookingDto: CancelBookingDto, ) { - return this.calendarService.cancelBooking(bookingId, cancelBookingDto); + return this.calendarService.cancelBooking(bookingId, user.user!.userId, { + canceledReason: cancelBookingDto.canceledReason, + }); } @Get('bookings/:eventId') diff --git a/server/src/calendar/calendar.service.ts b/server/src/calendar/calendar.service.ts index b930609..fbce5fb 100644 --- a/server/src/calendar/calendar.service.ts +++ b/server/src/calendar/calendar.service.ts @@ -584,9 +584,12 @@ export class CalendarService { async cancelBooking( bookingId: number, + userId: number, cancelBookingDto: CancelBookingDto, ): Promise { - const booking = await this.bookingRepository.findOneBy({ id: bookingId }); + const booking = await this.bookingRepository.findOne({ + where: { id: bookingId }, + }); if (!booking) { throw new NotFoundException(`Booking with ID ${bookingId} not found.`); } @@ -597,7 +600,7 @@ export class CalendarService { // Update the booking with cancellation details booking.canceledAt = new Date(); booking.canceledReason = cancelBookingDto.canceledReason || null; - booking.canceledByUserId = cancelBookingDto.canceledByUserId; + booking.canceledByUserId = userId; return this.bookingRepository.save(booking); } @@ -608,7 +611,7 @@ export class CalendarService { queryParams: CalendarGetBookingDto, ): Promise { // const { page = 1, limit = 0 } = queryParams; - const { page = 1, limit = 0, order } = queryParams; + const { page = 1, limit = 0, order } = queryParams; const findOptions: FindManyOptions = { where: { eventId: eventId, diff --git a/server/src/calendar/dto/cancel-booking.dto.ts b/server/src/calendar/dto/cancel-booking.dto.ts index 3a51783..62d24b8 100644 --- a/server/src/calendar/dto/cancel-booking.dto.ts +++ b/server/src/calendar/dto/cancel-booking.dto.ts @@ -7,9 +7,7 @@ import { } from 'class-validator'; export class CancelBookingDto { - @IsNotEmpty() - @IsInt() - canceledByUserId: number; + @IsOptional() @IsString()