sending the food, pick drop, navigation and other details in the verifyPayment api

This commit is contained in:
2026-04-16 14:54:29 +05:30
parent ce1be2c94e
commit 22e2e8e1b7

View File

@@ -2519,6 +2519,142 @@ export class ItineraryService {
select: {
id: true,
activityTitle: true,
ActivityFoodCost: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
foodTypesId: true,
baseAmount: true,
totalAmount: true,
ActivityFoodTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
ActivityTrainers: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
baseAmount: true,
totalAmount: true,
ActivityTrainerTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
ActivityNavigationModes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
navigationModeName: true,
navigationModesBasePrice: true,
navigationModesTotalPrice: true,
ActivityNavigationModesTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
ActivityPickUpDetails: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
isPickUp: true,
locationLat: true,
locationLong: true,
locationAddress: true,
transportBasePrice: true,
transportTotalPrice: true,
activityPickUpTransportTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
activityPickUpTransports: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
transportModeXid: true,
transportMode: {
select: {
id: true,
transportModeName: true,
transportModeIcon: true,
},
},
},
},
ActivityEquipments: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
equipmentName: true,
equipmentBasePrice: true,
equipmentTotalPrice: true,
ActivityEquipmentTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
},
},
venue: {
@@ -2566,6 +2702,88 @@ export class ItineraryService {
},
},
},
itineraryActivitySelections: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
itineraryMemberXid: true,
isFoodOpted: true,
isTrainerOpted: true,
isInActivityNavigationOpted: true,
activityNavigationMode: {
select: {
id: true,
navigationModeName: true,
navigationModesBasePrice: true,
navigationModesTotalPrice: true,
ActivityNavigationModesTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
selectedFoodTypes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
activityFoodTypeXid: true,
activityFoodType: {
select: {
id: true,
foodTypeXid: true,
foodType: {
select: {
id: true,
foodTypeName: true,
},
},
},
},
},
},
selectedEquipments: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
activityEquipmentXid: true,
activityEquipment: {
select: {
id: true,
equipmentName: true,
equipmentBasePrice: true,
equipmentTotalPrice: true,
ActivityEquipmentTaxes: {
where: { isActive: true, deletedAt: null },
select: {
id: true,
taxPer: true,
taxAmount: true,
taxes: {
select: {
id: true,
taxName: true,
taxPer: true,
},
},
},
},
},
},
},
},
},
},
},
},
},
@@ -2582,6 +2800,81 @@ export class ItineraryService {
const bookedActivities = await Promise.all(
itinerary.ItineraryActivities.map(async (activity) => {
const activitySelection =
activity.itineraryActivitySelections?.find(
(selection) => selection.itineraryMemberXid === itineraryMember.id,
) ?? null;
const selectedFoodTypes = activitySelection?.selectedFoodTypes ?? [];
const selectedEquipments = activitySelection?.selectedEquipments ?? [];
const selectedNavigationMode =
activitySelection?.activityNavigationMode ?? null;
const foodDetails = selectedFoodTypes.map((selectedFoodType) => {
const matchedCost =
activity.activity?.ActivityFoodCost.find(
(cost) => cost.foodTypesId === selectedFoodType.activityFoodType.foodTypeXid,
) ?? activity.activity?.ActivityFoodCost?.[0] ?? null;
return matchedCost
? {
id: selectedFoodType.id,
activityFoodTypeXid: selectedFoodType.activityFoodTypeXid,
foodTypeXid: selectedFoodType.activityFoodType.foodTypeXid,
foodTypeName: selectedFoodType.activityFoodType.foodType.foodTypeName,
baseAmount: Number(matchedCost.baseAmount) || 0,
totalAmount: Number(matchedCost.totalAmount) || 0,
taxes: mapCheckoutTaxes(matchedCost.ActivityFoodTaxes ?? []),
}
: {
id: selectedFoodType.id,
activityFoodTypeXid: selectedFoodType.activityFoodTypeXid,
foodTypeXid: selectedFoodType.activityFoodType.foodTypeXid,
foodTypeName: selectedFoodType.activityFoodType.foodType.foodTypeName,
baseAmount: 0,
totalAmount: 0,
taxes: [],
};
});
const equipmentDetails = selectedEquipments.map((selectedEquipment) => ({
id: selectedEquipment.id,
activityEquipmentXid: selectedEquipment.activityEquipmentXid,
equipmentName: selectedEquipment.activityEquipment.equipmentName,
baseAmount: Number(selectedEquipment.activityEquipment.equipmentBasePrice) || 0,
totalAmount: Number(selectedEquipment.activityEquipment.equipmentTotalPrice) || 0,
taxes: mapCheckoutTaxes(
selectedEquipment.activityEquipment.ActivityEquipmentTaxes ?? [],
),
}));
const navigationDetails = selectedNavigationMode
? {
id: selectedNavigationMode.id,
navigationModeName: selectedNavigationMode.navigationModeName,
baseAmount: Number(selectedNavigationMode.navigationModesBasePrice) || 0,
totalAmount: Number(selectedNavigationMode.navigationModesTotalPrice) || 0,
taxes: mapCheckoutTaxes(
selectedNavigationMode.ActivityNavigationModesTaxes ?? [],
),
}
: null;
const pickupDetails = (activity.activity?.ActivityPickUpDetails ?? []).map(
(pickUpDetail) => ({
id: pickUpDetail.id,
isPickUp: pickUpDetail.isPickUp,
locationLat: pickUpDetail.locationLat,
locationLong: pickUpDetail.locationLong,
locationAddress: pickUpDetail.locationAddress,
baseAmount: Number(pickUpDetail.transportBasePrice) || 0,
totalAmount: Number(pickUpDetail.transportTotalPrice) || 0,
taxes: mapCheckoutTaxes(
pickUpDetail.activityPickUpTransportTaxes ?? [],
),
}),
);
if (
activity.itineraryType !== 'ACTIVITY' ||
!activity.activityXid ||
@@ -2597,6 +2890,10 @@ export class ItineraryService {
startTime: activity.startTime,
endTime: activity.endTime,
},
foodDetails,
equipmentDetails,
navigationDetails,
pickupDetails,
skipped: true,
reason: 'not_bookable_activity',
};
@@ -2626,6 +2923,10 @@ export class ItineraryService {
startTime: activity.startTime,
endTime: activity.endTime,
},
foodDetails,
equipmentDetails,
navigationDetails,
pickupDetails,
skipped: false,
alreadyBooked: true,
checkInCode: existingDetail.offlineCode,
@@ -2860,6 +3161,10 @@ export class ItineraryService {
startTime: activity.startTime,
endTime: activity.endTime,
},
foodDetails,
equipmentDetails,
navigationDetails,
pickupDetails,
skipped: false,
alreadyBooked: false,
checkInCode: detail.offlineCode,