"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inspectionParamSchema = exports.driverParamSchema = exports.idParamSchema = exports.inspectionTypeParam = exports.approvalSchema = exports.cancelSchema = exports.extendSchema = exports.checkoutSchema = exports.checkinSchema = exports.listQuerySchema = exports.updateSchema = exports.createSchema = exports.inspectionSchema = exports.additionalDriverSchema = void 0; const zod_1 = require("zod"); exports.additionalDriverSchema = zod_1.z.object({ firstName: zod_1.z.string().min(1), lastName: zod_1.z.string().min(1), email: zod_1.z.string().email().optional(), phone: zod_1.z.string().optional(), driverLicense: zod_1.z.string().min(1), licenseExpiry: zod_1.z.string().datetime().optional(), licenseIssuedAt: zod_1.z.string().datetime().optional(), dateOfBirth: zod_1.z.string().datetime().optional(), nationality: zod_1.z.string().optional(), }); exports.inspectionSchema = zod_1.z.object({ mileage: zod_1.z.number().int().optional(), fuelLevel: zod_1.z.enum(['FULL', 'SEVEN_EIGHTHS', 'THREE_QUARTERS', 'FIVE_EIGHTHS', 'HALF', 'THREE_EIGHTHS', 'QUARTER', 'ONE_EIGHTH', 'EMPTY']), fuelCharge: zod_1.z.number().int().min(0).optional(), generalCondition: zod_1.z.string().optional(), employeeNotes: zod_1.z.string().optional(), customerAgreed: zod_1.z.boolean().default(false), damagePoints: zod_1.z.array(zod_1.z.object({ viewType: zod_1.z.enum(['TOP', 'FRONT', 'REAR', 'LEFT', 'RIGHT']), x: zod_1.z.number(), y: zod_1.z.number(), damageType: zod_1.z.enum(['SCRATCH', 'DENT', 'CRACK', 'CHIP', 'MISSING', 'STAIN', 'OTHER']), severity: zod_1.z.enum(['MINOR', 'MODERATE', 'MAJOR']).default('MINOR'), description: zod_1.z.string().optional(), isPreExisting: zod_1.z.boolean().default(false), })).default([]), }); exports.createSchema = zod_1.z.object({ vehicleId: zod_1.z.string().cuid(), customerId: zod_1.z.string().cuid(), startDate: zod_1.z.string().datetime(), endDate: zod_1.z.string().datetime(), pickupLocation: zod_1.z.string().optional(), returnLocation: zod_1.z.string().optional(), offerId: zod_1.z.string().cuid().optional(), promoCodeUsed: zod_1.z.string().optional(), depositAmount: zod_1.z.number().int().min(0).default(0), paymentMode: zod_1.z.string().max(50).optional(), notes: zod_1.z.string().optional(), selectedInsurancePolicyIds: zod_1.z.array(zod_1.z.string()).default([]), additionalDrivers: zod_1.z.array(exports.additionalDriverSchema).default([]), }); exports.updateSchema = zod_1.z.object({ startDate: zod_1.z.string().datetime().optional(), endDate: zod_1.z.string().datetime().optional(), pickupLocation: zod_1.z.string().optional().nullable(), returnLocation: zod_1.z.string().optional().nullable(), depositAmount: zod_1.z.number().int().min(0).optional(), notes: zod_1.z.string().optional().nullable(), paymentMode: zod_1.z.string().max(50).optional().nullable(), damageChargeAmount: zod_1.z.number().int().min(0).optional(), damageChargeNote: zod_1.z.string().optional().nullable(), }); exports.listQuerySchema = zod_1.z.object({ status: zod_1.z.string().optional(), vehicleId: zod_1.z.string().optional(), source: zod_1.z.string().optional(), startDate: zod_1.z.string().optional(), endDate: zod_1.z.string().optional(), page: zod_1.z.coerce.number().int().min(1).default(1), pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20), }); exports.checkinSchema = zod_1.z.object({ mileage: zod_1.z.number().int().optional() }); exports.checkoutSchema = zod_1.z.object({ mileage: zod_1.z.number().int().optional() }); exports.extendSchema = zod_1.z.object({ newEndDate: zod_1.z.string().datetime(), reason: zod_1.z.string().min(1) }); exports.cancelSchema = zod_1.z.object({ reason: zod_1.z.string().optional() }); exports.approvalSchema = zod_1.z.object({ approved: zod_1.z.boolean(), note: zod_1.z.string().optional() }); exports.inspectionTypeParam = zod_1.z.enum(['CHECKIN', 'CHECKOUT']); exports.idParamSchema = zod_1.z.object({ id: zod_1.z.string() }); exports.driverParamSchema = zod_1.z.object({ id: zod_1.z.string(), driverId: zod_1.z.string() }); exports.inspectionParamSchema = zod_1.z.object({ id: zod_1.z.string(), type: zod_1.z.string() }); //# sourceMappingURL=reservation.schemas.js.map