From cf2bbbf138454ecc43c66ecb5c50ffcb6414e13e Mon Sep 17 00:00:00 2001 From: Mayank Mishra Date: Wed, 11 Mar 2026 15:53:54 +0530 Subject: [PATCH] fixed the response structure in the specific api --- .../services/filteredLandingPage.service.ts | 54 +++++++++++-------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/modules/user/services/filteredLandingPage.service.ts b/src/modules/user/services/filteredLandingPage.service.ts index d400eea..01becbf 100644 --- a/src/modules/user/services/filteredLandingPage.service.ts +++ b/src/modules/user/services/filteredLandingPage.service.ts @@ -145,7 +145,10 @@ export class FilteredLandingPageService { Math.sin(dLon / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); - return R * c; + const distance = R * c; + + // return distance rounded to 2 decimals + return Number(distance.toFixed(2)); }; async rankAndPaginateActivities( @@ -560,26 +563,32 @@ export class FilteredLandingPageService { ); // Group by interests for the final structure - const interestsWithActivityTypes = await Promise.all(Object.values(activityTypesByInterest).map( - async (interestGroup: any) => ({ - interestId: interestGroup.interest.id, - interestName: interestGroup.interest.interestName, - interestColor: interestGroup.interest.interestColor, - interestImage: interestGroup.interest.interestImage, - interestImagePresignedUrl: await attachPresignedUrl(interestGroup.interest.interestImage), - displayOrder: interestGroup.interest.displayOrder, - activityTypes: interestGroup.activityTypes.map((at: any) => { - const activityTypeData = activitiesByActivityType.find( - (adata) => adata.activityTypeId === at.activityTypeId - ); - return { - ...at, - activities: activityTypeData?.activities || [], - pagination: activityTypeData?.pagination || { page, limit, hasMore: false }, - }; - }), - }), - )); + const interestsWithActivities = await Promise.all( + Object.values(activityTypesByInterest).map(async (interestGroup: any) => { + + // collect all activities belonging to this interest + const activitiesForInterest = activitiesByActivityType + .filter(a => a.interestXid === interestGroup.interest.id) + .flatMap(a => a.activities); + + return { + interestId: interestGroup.interest.id, + interestName: interestGroup.interest.interestName, + interestColor: interestGroup.interest.interestColor, + interestImage: interestGroup.interest.interestImage, + interestImagePresignedUrl: await attachPresignedUrl( + interestGroup.interest.interestImage + ), + displayOrder: interestGroup.interest.displayOrder, + + page, + limit, + hasMore: activitiesForInterest.length === limit, + + activities: activitiesForInterest + }; + }) + ); // Most Hyped Activities with filtering const mostHypedGrouped = await tx.userBucketInterested.groupBy({ @@ -916,8 +925,7 @@ export class FilteredLandingPageService { limit, }, randomActivities, - interests: interestsWithActivityTypes, - activityTypes: activitiesByActivityType, + interests: interestsWithActivities, otherStatesActivities: formattedOtherStatesActivities, overSeasActivities: formattedOverSeasActivities, newArrivalsActivities: formattedNewArrivalsActivities,