2025-12-18 20:05:30 +05:30
|
|
|
import { z } from 'zod';
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= MEDIA ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const MediaDto = z.object({
|
2025-12-31 14:42:30 +05:30
|
|
|
mediaType: z.string().optional(),
|
|
|
|
|
mediaFileName: z.string(),
|
2026-02-25 13:34:03 +05:30
|
|
|
isCoverImage: z.boolean().optional().default(false),
|
2025-12-18 20:05:30 +05:30
|
|
|
});
|
|
|
|
|
|
2025-12-31 14:42:30 +05:30
|
|
|
/* ================= PRICE ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const PriceDto = z.object({
|
|
|
|
|
noOfSession: z.number().int().optional().default(1),
|
|
|
|
|
isPackage: z.boolean().optional().default(false),
|
|
|
|
|
sessionValidity: z.number().int().optional().default(0),
|
|
|
|
|
sessionValidityFrequency: z.string().optional().default('Days'),
|
|
|
|
|
basePrice: z.number().int().optional().default(0),
|
2025-12-31 14:42:30 +05:30
|
|
|
sellPrice: z.number().int(),
|
2025-12-18 20:05:30 +05:30
|
|
|
});
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= VENUE ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const VenueDto = z.object({
|
|
|
|
|
venueName: z.string(),
|
2025-12-31 13:03:23 +05:30
|
|
|
venueLabel: z.string(),
|
2025-12-18 20:05:30 +05:30
|
|
|
venueCapacity: z.number().int().optional().default(0),
|
|
|
|
|
availableSeats: z.number().int().optional().default(0),
|
|
|
|
|
isMinPeopleReqMandatory: z.boolean().optional().default(false),
|
|
|
|
|
minPeopleRequired: z.number().int().nullable().optional(),
|
|
|
|
|
minReqfullfilledBeforeMins: z.number().int().nullable().optional(),
|
|
|
|
|
venueDescription: z.string().optional(),
|
2025-12-22 13:30:55 +05:30
|
|
|
media: z.array(MediaDto).optional().default([]),
|
2025-12-18 20:05:30 +05:30
|
|
|
prices: z.array(PriceDto).optional().default([]),
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= PICKUP / DROP ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const PickupDetailDto = z.object({
|
|
|
|
|
isPickUp: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
locationLat: z.number().nullable().optional(),
|
|
|
|
|
locationLong: z.number().nullable().optional(),
|
|
|
|
|
locationAddress: z.string().nullable().optional(),
|
2026-01-08 20:17:01 +05:30
|
|
|
transportTotalPrice: z.number().int().min(0),
|
2025-12-18 20:05:30 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const PickupTransportDto = z.object({
|
|
|
|
|
transportModeXid: z.number().int(),
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= EQUIPMENT ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const EquipmentDto = z.object({
|
|
|
|
|
equipmentName: z.string(),
|
2026-01-05 13:28:25 +05:30
|
|
|
isEquipmentChargeable: z.boolean().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
equipmentBasePrice: z.number().int().optional().default(0),
|
|
|
|
|
equipmentTotalPrice: z.number().int().optional().default(0),
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-31 14:42:30 +05:30
|
|
|
/* ================= NAVIGATION MODE ================= */
|
|
|
|
|
export const NavigationModeDto = z.object({
|
2026-03-02 19:05:08 +05:30
|
|
|
navigationModeName: z.string().optional(),
|
2026-01-05 13:28:25 +05:30
|
|
|
isChargeable: z.boolean().optional(),
|
2025-12-31 14:42:30 +05:30
|
|
|
totalPrice: z.number().int().optional().default(0),
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= ELIGIBILITY ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const EligibilityDto = z.object({
|
|
|
|
|
isAgeRestriction: z.boolean().optional().default(false),
|
2025-12-24 17:10:54 +05:30
|
|
|
ageRestrictionName: z.string().nullable().optional(),
|
|
|
|
|
ageEntered: z.number().int().nullable().optional(),
|
|
|
|
|
ageIn: z.string().nullable().optional(),
|
|
|
|
|
minAge: z.number().int().nullable().optional(),
|
|
|
|
|
maxAge: z.number().int().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
isWeightRestriction: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
weightRestrictionName: z.string().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
weightEntered: z.number().int().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
weightIn: z.string().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
minWeight: z.number().int().nullable().optional(),
|
|
|
|
|
maxWeight: z.number().int().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
isHeightRestriction: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
heightRestrictionName: z.string().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
heightEntered: z.number().int().nullable().optional(),
|
2025-12-22 13:30:55 +05:30
|
|
|
heightIn: z.string().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
minHeight: z.number().int().nullable().optional(),
|
|
|
|
|
maxHeight: z.number().int().nullable().optional(),
|
|
|
|
|
});
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= OTHER DETAILS ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const OtherDetailsDto = z.object({
|
|
|
|
|
exclusiveNotes: z.string().optional(),
|
2026-02-25 14:41:58 +05:30
|
|
|
safetyInstruction: z.string().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
dosNotes: z.string().optional(),
|
|
|
|
|
dontsNotes: z.string().optional(),
|
|
|
|
|
tipsNotes: z.string().optional(),
|
|
|
|
|
termsAndCondition: z.string().optional(),
|
2026-02-25 14:41:58 +05:30
|
|
|
cancellations: z.string().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
});
|
|
|
|
|
|
2025-12-21 17:28:08 +05:30
|
|
|
/* ================= CREATE ACTIVITY ================= */
|
2025-12-18 20:05:30 +05:30
|
|
|
export const CreateActivityDto = z.object({
|
2025-12-21 17:28:08 +05:30
|
|
|
activityXid: z.number().int(),
|
|
|
|
|
|
|
|
|
|
activityTypeXid: z.number().int().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
frequenciesXid: z.number().int().nullable().optional(),
|
|
|
|
|
activityTitle: z.string().optional(),
|
|
|
|
|
activityDescription: z.string().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
|
|
|
|
checkInLat: z.number().nullable().optional(),
|
|
|
|
|
checkInLong: z.number().nullable().optional(),
|
|
|
|
|
checkInAddress: z.string().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
isCheckOutSame: z.boolean().optional().default(true),
|
2025-12-21 17:28:08 +05:30
|
|
|
checkOutLat: z.number().nullable().optional(),
|
|
|
|
|
checkOutLong: z.number().nullable().optional(),
|
|
|
|
|
checkOutAddress: z.string().nullable().optional(),
|
2026-02-04 15:32:11 +05:30
|
|
|
checkInStateName: z.string().nullable().optional(),
|
|
|
|
|
checkInCityName: z.string().nullable().optional(),
|
|
|
|
|
checkInCountryName: z.string().nullable().optional(),
|
|
|
|
|
checkOutStateName: z.string().nullable().optional(),
|
|
|
|
|
checkOutCityName: z.string().nullable().optional(),
|
|
|
|
|
checkOutCountryName: z.string().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
energyLevelXid: z.number().int().nullable().optional(),
|
2025-12-24 19:04:51 +05:30
|
|
|
durationDays: z.number().int().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
durationHours: z.number().int().optional(),
|
|
|
|
|
durationMins: z.number().int().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2026-01-08 16:38:41 +05:30
|
|
|
foodAvailable: z.boolean().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
foodIsChargeable: z.boolean().optional().default(false),
|
2026-01-08 16:38:41 +05:30
|
|
|
alcoholAvailable: z.boolean().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2026-01-08 16:38:41 +05:30
|
|
|
trainerAvailable: z.boolean().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
trainerIsChargeable: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2026-01-08 16:38:41 +05:30
|
|
|
pickUpDropAvailable: z.boolean().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
pickUpDropIsChargeable: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2026-01-08 16:38:41 +05:30
|
|
|
inActivityAvailable: z.boolean().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
inActivityIsChargeable: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2026-01-08 16:38:41 +05:30
|
|
|
equipmentAvailable: z.boolean().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
equipmentIsChargeable: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2026-01-08 16:38:41 +05:30
|
|
|
cancellationAvailable: z.boolean().nullable().optional(),
|
2025-12-31 13:03:23 +05:30
|
|
|
cancellationAllowedBeforeMins: z.number().int().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
currencyXid: z.number().int().nullable().optional(),
|
2025-12-21 17:28:08 +05:30
|
|
|
sustainabilityScore: z.number().int().nullable().optional(),
|
|
|
|
|
safetyScore: z.number().int().nullable().optional(),
|
2025-12-18 20:05:30 +05:30
|
|
|
isInstantBooking: z.boolean().optional().default(false),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
|
|
|
|
taxXids: z.array(z.number().int()).optional().default([]),
|
|
|
|
|
|
2025-12-31 14:42:30 +05:30
|
|
|
media: z.array(MediaDto).optional().default([]),
|
|
|
|
|
venues: z.array(VenueDto).optional().default([]),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
foodTypeIds: z.array(z.number().int()).optional().default([]),
|
|
|
|
|
cuisineIds: z.array(z.number().int()).optional().default([]),
|
|
|
|
|
pickupTransports: z.array(PickupTransportDto).optional().default([]),
|
2026-01-08 20:17:01 +05:30
|
|
|
pickupDetails: z.array(PickupDetailDto).optional().default([]),
|
2025-12-31 14:42:30 +05:30
|
|
|
|
|
|
|
|
navigationModes: z
|
|
|
|
|
.array(NavigationModeDto)
|
|
|
|
|
.optional()
|
|
|
|
|
.default([]),
|
|
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
equipments: z.array(EquipmentDto).optional().default([]),
|
|
|
|
|
amenitiesIds: z.array(z.number().int()).optional().default([]),
|
2025-12-21 17:28:08 +05:30
|
|
|
|
2025-12-24 19:04:51 +05:30
|
|
|
foodTotalAmount: z.number().int().optional().default(0),
|
|
|
|
|
|
2025-12-18 20:05:30 +05:30
|
|
|
eligibility: EligibilityDto.optional(),
|
|
|
|
|
otherDetails: OtherDetailsDto.optional(),
|
2025-12-24 15:11:37 +05:30
|
|
|
|
|
|
|
|
allowedEntryTypes: z.array(z.number().int()).optional().default([]),
|
2025-12-24 17:10:54 +05:30
|
|
|
trainerTotalAmount: z.number().int().optional().default(0),
|
2025-12-18 20:05:30 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export type CreateActivityInput = z.infer<typeof CreateActivityDto>;
|