Files
MinglarBackendNestJS/src/modules/host/dto/createActivity.schema.ts

126 lines
5.4 KiB
TypeScript
Raw Normal View History

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>;