import { z } from 'zod'; /* ================= MEDIA ================= */ export const MediaDto = z.object({ mediaType: z.string().optional(), mediaFileName: z.string(), isCoverImage: z.boolean().optional().default(false), }); /* ================= PRICE ================= */ 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(), }); /* ================= VENUE ================= */ export const VenueDto = z.object({ venueName: z.string(), venueLabel: 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(), media: z.array(MediaDto).optional().default([]), prices: z.array(PriceDto).optional().default([]), }); /* ================= PICKUP / DROP ================= */ export const PickupDetailDto = z.object({ isPickUp: z.boolean().optional().default(false), locationLat: z.number().nullable().optional(), locationLong: z.number().nullable().optional(), locationAddress: z.string().nullable().optional(), transportTotalPrice: z.number().int().min(0), }); export const PickupTransportDto = z.object({ transportModeXid: z.number().int(), }); /* ================= EQUIPMENT ================= */ export const EquipmentDto = z.object({ equipmentName: z.string(), isEquipmentChargeable: z.boolean().optional(), equipmentBasePrice: z.number().int().optional().default(0), equipmentTotalPrice: z.number().int().optional().default(0), }); /* ================= NAVIGATION MODE ================= */ export const NavigationModeDto = z.object({ navigationModeName: z.string().optional(), isChargeable: z.boolean().optional(), totalPrice: z.number().int().optional().default(0), }); /* ================= ELIGIBILITY ================= */ export const EligibilityDto = z.object({ isAgeRestriction: z.boolean().optional().default(false), 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(), isWeightRestriction: z.boolean().optional().default(false), weightRestrictionName: z.string().nullable().optional(), weightEntered: z.number().int().nullable().optional(), weightIn: z.string().nullable().optional(), minWeight: z.number().int().nullable().optional(), maxWeight: z.number().int().nullable().optional(), isHeightRestriction: z.boolean().optional().default(false), heightRestrictionName: z.string().nullable().optional(), heightEntered: z.number().int().nullable().optional(), heightIn: z.string().nullable().optional(), minHeight: z.number().int().nullable().optional(), maxHeight: z.number().int().nullable().optional(), }); /* ================= OTHER DETAILS ================= */ export const OtherDetailsDto = z.object({ exclusiveNotes: z.string().optional(), safetyInstruction: z.string().optional(), dosNotes: z.string().optional(), dontsNotes: z.string().optional(), tipsNotes: z.string().optional(), termsAndCondition: z.string().optional(), cancellations: z.string().optional(), }); /* ================= CREATE ACTIVITY ================= */ export const CreateActivityDto = z.object({ activityXid: z.number().int(), activityTypeXid: z.number().int().optional(), frequenciesXid: z.number().int().nullable().optional(), activityTitle: z.string().optional(), activityDescription: z.string().optional(), checkInLat: z.number().nullable().optional(), checkInLong: z.number().nullable().optional(), checkInAddress: z.string().nullable().optional(), isCheckOutSame: z.boolean().optional().default(true), checkOutLat: z.number().nullable().optional(), checkOutLong: z.number().nullable().optional(), checkOutAddress: z.string().nullable().optional(), 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(), energyLevelXid: z.number().int().nullable().optional(), durationDays: z.number().int().optional(), durationHours: z.number().int().optional(), durationMins: z.number().int().optional(), foodAvailable: z.boolean().nullable().optional(), foodIsChargeable: z.boolean().optional().default(false), alcoholAvailable: z.boolean().nullable().optional(), trainerAvailable: z.boolean().nullable().optional(), trainerIsChargeable: z.boolean().optional().default(false), pickUpDropAvailable: z.boolean().nullable().optional(), pickUpDropIsChargeable: z.boolean().optional().default(false), inActivityAvailable: z.boolean().nullable().optional(), inActivityIsChargeable: z.boolean().optional().default(false), equipmentAvailable: z.boolean().nullable().optional(), equipmentIsChargeable: z.boolean().optional().default(false), cancellationAvailable: z.boolean().nullable().optional(), cancellationAllowedBeforeMins: z.number().int().nullable().optional(), currencyXid: z.number().int().nullable().optional(), sustainabilityScore: z.number().int().nullable().optional(), safetyScore: z.number().int().nullable().optional(), isInstantBooking: z.boolean().optional().default(false), taxXids: z.array(z.number().int()).optional().default([]), 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([]), pickupDetails: z.array(PickupDetailDto).optional().default([]), navigationModes: z .array(NavigationModeDto) .optional() .default([]), equipments: z.array(EquipmentDto).optional().default([]), amenitiesIds: z.array(z.number().int()).optional().default([]), foodTotalAmount: z.number().int().optional().default(0), eligibility: EligibilityDto.optional(), otherDetails: OtherDetailsDto.optional(), allowedEntryTypes: z.array(z.number().int()).optional().default([]), trainerTotalAmount: z.number().int().optional().default(0), }); export type CreateActivityInput = z.infer;