From 40df4533b97e094e021965d280fdb36036ba5809 Mon Sep 17 00:00:00 2001 From: Youssef Yasser Date: Mon, 11 Nov 2024 20:03:59 +0200 Subject: [PATCH] feat: prevent user request account deletion if he has bookings --- .../src/controllers/users/user.controller.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/backend/src/controllers/users/user.controller.ts b/backend/src/controllers/users/user.controller.ts index b36d73d..9c1a3df 100644 --- a/backend/src/controllers/users/user.controller.ts +++ b/backend/src/controllers/users/user.controller.ts @@ -100,6 +100,24 @@ const updateUser = async (req: Request, res: Response) => { const requestAccountDeletion = async (req: Request, res: Response) => { try { const userId: string = req.user.userId; + + const userItineraryBookings = await userRepo.getItinerary(userId); + const unattendedItineraryBookings = + userItineraryBookings?.itinerary_bookings.filter((booking: any) => + ['pending', 'confirmed'].includes(booking.status) + ) || []; + + const userActivityBookings = await userRepo.getItinerary(userId); + const unattendedActivityBookings = + userActivityBookings?.activity_bookings.filter((booking: any) => + ['pending', 'confirmed'].includes(booking.status) + ) || []; + + if (unattendedItineraryBookings.length > 0 || unattendedActivityBookings.length > 0) { + res.status(ResponseStatusCodes.BAD_REQUEST).json({ message: 'You have unattended bookings' }); + return; + } + await userRepo.requestAccountDeletion(userId); const response = { message: 'Account deletion requested successfully',