126 lines
5.4 KiB
TypeScript
126 lines
5.4 KiB
TypeScript
|
|
import { z } from 'zod';
|
||
|
|
|
||
|
|
export const MediaDto = z.object({
|
||
|
|
mediaType: z.string().optional(),
|
||
|
|
mediaFileName: z.string(),
|
||
|
|
});
|
||
|
|
|
||
|
|
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),
|
||
|
|
sellPrice: z.number().int().optional().default(0),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const VenueDto = z.object({
|
||
|
|
venueName: z.string(),
|
||
|
|
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(),
|
||
|
|
prices: z.array(PriceDto).optional().default([]),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const PickupDetailDto = z.object({
|
||
|
|
isPickUp: z.boolean().optional().default(false),
|
||
|
|
locationLat: z.number().optional().nullable(),
|
||
|
|
locationLong: z.number().optional().nullable(),
|
||
|
|
locationAddress: z.string().optional().nullable(),
|
||
|
|
transportBasePrice: z.number().int().optional().default(0),
|
||
|
|
transportTotalPrice: z.number().int().optional().default(0),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const PickupTransportDto = z.object({
|
||
|
|
transportModeXid: z.number().int(),
|
||
|
|
isTransportModeChargeable: z.boolean().optional().default(false),
|
||
|
|
pickupDetails: z.array(PickupDetailDto).optional().default([]),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const NavigationModeDto = z.object({
|
||
|
|
navigationModeXid: z.number().int(),
|
||
|
|
isInActivityChargeable: z.boolean().optional().default(false),
|
||
|
|
basePrice: z.number().int().optional().default(0),
|
||
|
|
totalPrice: z.number().int().optional().default(0),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const EquipmentDto = z.object({
|
||
|
|
equipmentName: z.string(),
|
||
|
|
isEquipmentChargeable: z.boolean().optional().default(false),
|
||
|
|
equipmentBasePrice: z.number().int().optional().default(0),
|
||
|
|
equipmentTotalPrice: z.number().int().optional().default(0),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const EligibilityDto = z.object({
|
||
|
|
isAgeRestriction: z.boolean().optional().default(false),
|
||
|
|
ageRestrictionXid: z.number().int().nullable().optional(),
|
||
|
|
isWeightRestriction: z.boolean().optional().default(false),
|
||
|
|
weightRestrictionName: z.string().optional().nullable(),
|
||
|
|
weightEntered: z.number().int().nullable().optional(),
|
||
|
|
weightIn: z.string().optional().nullable(),
|
||
|
|
minWeight: z.number().int().nullable().optional(),
|
||
|
|
maxWeight: z.number().int().nullable().optional(),
|
||
|
|
isHeightRestriction: z.boolean().optional().default(false),
|
||
|
|
heightRestrictionName: z.string().optional().nullable(),
|
||
|
|
heightEntered: z.number().int().nullable().optional(),
|
||
|
|
minHeight: z.number().int().nullable().optional(),
|
||
|
|
maxHeight: z.number().int().nullable().optional(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const OtherDetailsDto = z.object({
|
||
|
|
exclusiveNotes: z.string().optional(),
|
||
|
|
dosNotes: z.string().optional(),
|
||
|
|
dontsNotes: z.string().optional(),
|
||
|
|
tipsNotes: z.string().optional(),
|
||
|
|
termsAndCondition: z.string().optional(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const CreateActivityDto = z.object({
|
||
|
|
activityTypeXid: z.number().int(),
|
||
|
|
frequenciesXid: z.number().int().nullable().optional(),
|
||
|
|
activityTitle: z.string().optional(),
|
||
|
|
activityDescription: z.string().optional(),
|
||
|
|
checkInLat: z.number().optional().nullable(),
|
||
|
|
checkInLong: z.number().optional().nullable(),
|
||
|
|
checkInAddress: z.string().optional().nullable(),
|
||
|
|
isCheckOutSame: z.boolean().optional().default(true),
|
||
|
|
checkOutLat: z.number().optional().nullable(),
|
||
|
|
checkOutLong: z.number().optional().nullable(),
|
||
|
|
checkOutAddress: z.string().optional().nullable(),
|
||
|
|
energyLevelXid: z.number().int().nullable().optional(),
|
||
|
|
activityDurationMins: z.number().int().nullable().optional(),
|
||
|
|
durationHours: z.number().int().optional(),
|
||
|
|
durationMins: z.number().int().optional(),
|
||
|
|
foodAvailable: z.boolean().optional().default(false),
|
||
|
|
foodIsChargeable: z.boolean().optional().default(false),
|
||
|
|
alcoholAvailable: z.boolean().optional().default(false),
|
||
|
|
trainerAvailable: z.boolean().optional().default(false),
|
||
|
|
trainerIsChargeable: z.boolean().optional().default(false),
|
||
|
|
pickUpDropAvailable: z.boolean().optional().default(false),
|
||
|
|
pickUpDropIsChargeable: z.boolean().optional().default(false),
|
||
|
|
inActivityAvailable: z.boolean().optional().default(false),
|
||
|
|
inActivityIsChargeable: z.boolean().optional().default(false),
|
||
|
|
equipmentAvailable: z.boolean().optional().default(false),
|
||
|
|
equipmentIsChargeable: z.boolean().optional().default(false),
|
||
|
|
cancellationAvailable: z.boolean().optional().default(false),
|
||
|
|
currencyXid: z.number().int().nullable().optional(),
|
||
|
|
sustainabilityScore: z.number().int().optional().nullable(),
|
||
|
|
safetyScore: z.number().int().optional().nullable(),
|
||
|
|
isInstantBooking: z.boolean().optional().default(false),
|
||
|
|
media: z.array(MediaDto).optional().default([]),
|
||
|
|
venues: z.array(VenueDto).optional().default([]),
|
||
|
|
foodTypeIds: z.array(z.number().int()).optional().default([]),
|
||
|
|
cuisineIds: z.array(z.number().int()).optional().default([]),
|
||
|
|
pickupTransports: z.array(PickupTransportDto).optional().default([]),
|
||
|
|
navigationModes: z.array(NavigationModeDto).optional().default([]),
|
||
|
|
equipments: z.array(EquipmentDto).optional().default([]),
|
||
|
|
amenitiesIds: z.array(z.number().int()).optional().default([]),
|
||
|
|
eligibility: EligibilityDto.optional(),
|
||
|
|
otherDetails: OtherDetailsDto.optional(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export type CreateActivityInput = z.infer<typeof CreateActivityDto>;
|