From 77fee0cc04cae6120893545e6c0a3b0e318a0d14 Mon Sep 17 00:00:00 2001 From: Mayank Mishra Date: Thu, 19 Feb 2026 14:51:26 +0530 Subject: [PATCH] Sending the venue images and transportaion modes and activity type name --- .../minglaradmin/services/minglar.service.ts | 7 +++ .../activities/checkAvailabilityDetails.ts | 59 ++++++++++--------- src/modules/user/services/user.service.ts | 55 ++++++++++++++++- 3 files changed, 93 insertions(+), 28 deletions(-) diff --git a/src/modules/minglaradmin/services/minglar.service.ts b/src/modules/minglaradmin/services/minglar.service.ts index ed3b90e..00a198d 100644 --- a/src/modules/minglaradmin/services/minglar.service.ts +++ b/src/modules/minglaradmin/services/minglar.service.ts @@ -2064,6 +2064,12 @@ export class MinglarService { activityInternalStatus: true, amInternalStatus: true, amDisplayStatus: true, + activityType: { + select: { + id: true, + activityTypeName: true + } + }, host: { select: { id: true, @@ -2149,6 +2155,7 @@ export class MinglarService { displayOrder: cat.displayOrder, hostId: item.activity.host.id, hostCompanyName: item.activity.host.companyName, + activityTypeName: item.activity.activityType.activityTypeName, hostLogoPath: item.activity.host.logoPath, activityRefNumber: item.activity.activityRefNumber, activityDisplayStatus: item.activity.activityDisplayStatus, diff --git a/src/modules/user/handlers/activities/checkAvailabilityDetails.ts b/src/modules/user/handlers/activities/checkAvailabilityDetails.ts index f238b6e..96cbacd 100644 --- a/src/modules/user/handlers/activities/checkAvailabilityDetails.ts +++ b/src/modules/user/handlers/activities/checkAvailabilityDetails.ts @@ -30,8 +30,8 @@ export const handler = safeHandler(async ( const activityXid = Number(event.pathParameters?.activity_xid); if (!activityXid || isNaN(activityXid)) { - throw new ApiError(400, 'Valid activityXid is required'); -} + throw new ApiError(400, 'Valid activityXid is required'); + } // selected date may be passed as query param `selectedDate` const selectedDate = @@ -78,31 +78,36 @@ export const handler = safeHandler(async ( endDate: header?.endDate ?? null, slots: roomSlots, slotsCount: roomSlots.length, - - }; - }); - - // derive check-in/out from all room slots (earliest start, latest end) - const allSlots = Venues.flatMap(r => r.slots || []); - const startTimes = allSlots.map(s => s.startTime).filter(Boolean); - const endTimes = allSlots.map(s => s.endTime).filter(Boolean); - const checkInTime = startTimes.length ? startTimes.sort()[0] : null; - const checkOutTime = endTimes.length ? endTimes.sort().reverse()[0] : null; - - const responsePayload = { - selectedDate, - Venues, - checkInTime, - checkOutTime, - }; - - return { - statusCode: 200, - headers: { - 'Content-Type': 'application/json', - 'Access-Control-Allow-Origin': '*', - }, - body: JSON.stringify({ success: true, data: responsePayload }), + venueMedia: (v.ActivityVenueArtifacts || []).map((media: any) => ({ + id: media.id, + mediaType: media.mediaType, + mediaFileName: media.mediaFileName, // original S3 key / URL + presignedUrl: media.presignedUrl, // presigned URL + })), }; }); +// derive check-in/out from all room slots (earliest start, latest end) +const allSlots = Venues.flatMap(r => r.slots || []); +const startTimes = allSlots.map(s => s.startTime).filter(Boolean); +const endTimes = allSlots.map(s => s.endTime).filter(Boolean); +const checkInTime = startTimes.length ? startTimes.sort()[0] : null; +const checkOutTime = endTimes.length ? endTimes.sort().reverse()[0] : null; + +const responsePayload = { + selectedDate, + Venues, + checkInTime, + checkOutTime, +}; + +return { + statusCode: 200, + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + }, + body: JSON.stringify({ success: true, data: responsePayload }), +}; +}); + diff --git a/src/modules/user/services/user.service.ts b/src/modules/user/services/user.service.ts index e81e810..914b948 100644 --- a/src/modules/user/services/user.service.ts +++ b/src/modules/user/services/user.service.ts @@ -1518,7 +1518,21 @@ export class UserService { locationLat: true, locationLong: true, locationAddress: true, - transportTotalPrice: true + transportTotalPrice: true, + } + }, + + activityPickUpTransports: { + where: { isActive: true }, + select: { + id: true, + transportMode: { + select: { + id: true, + transportModeName: true, + transportModeIcon: true + } + } } }, @@ -1550,6 +1564,13 @@ export class UserService { minPeopleRequired: true, minReqfullfilledBeforeMins: true, venueDescription: true, + ActivityVenueArtifacts: { + select: { + id: true, + mediaFileName: true, + mediaType: true + } + }, ActivityPrices: { select: { id: true, @@ -1590,6 +1611,38 @@ export class UserService { ); } + // 5️⃣ PickUp Transport Mode Icons + if (Array.isArray(activity?.activityPickUpTransports)) { + await Promise.all( + activity.activityPickUpTransports.map(async (item: any) => { + if (item?.transportMode?.transportModeIcon) { + item.transportMode.presignedUrl = + await attachPresignedUrl( + item.transportMode.transportModeIcon + ); + } + }) + ); + } + + // 3️⃣ Activity Venue Artifacts + if (Array.isArray(activity?.ActivityVenues)) { + await Promise.all( + activity.ActivityVenues.map(async (venue: any) => { + if (Array.isArray(venue?.ActivityVenueArtifacts)) { + venue.ActivityVenueArtifacts = await Promise.all( + venue.ActivityVenueArtifacts.map(async (artifact: any) => ({ + ...artifact, + presignedUrl: await attachPresignedUrl( + artifact.mediaFileName + ), + })) + ); + } + }) + ); + } + // 3️⃣ Navigation Mode Icons if (Array.isArray(activity?.ActivityNavigationModes)) { await Promise.all(