"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.paymentMethodValidationSchema = exports.userMappingValidationSchema = exports.skuValidationSchema = exports.orderBusinessValidationSchema = void 0; const zod_1 = require("zod"); const requests_1 = require("../api/requests"); const identifiers_1 = require("../shared/identifiers"); exports.orderBusinessValidationSchema = requests_1.createOrderRequestSchema .extend({ userId: identifiers_1.userIdSchema, opportunityId: zod_1.z.string().optional(), }) .refine(data => { if (data.orderType === "Internet") { const mainServiceSkus = data.skus.filter(sku => { const upperSku = sku.toUpperCase(); return (!upperSku.includes("INSTALL") && !upperSku.includes("ADDON") && !upperSku.includes("ACTIVATION") && !upperSku.includes("FEE")); }); return mainServiceSkus.length >= 1; } return true; }, { message: "Internet orders must have at least one main service SKU (non-installation, non-addon)", path: ["skus"], }) .refine(data => { if (data.orderType === "SIM" && data.configurations) { return data.configurations.simType !== undefined; } return true; }, { message: "SIM orders must specify SIM type", path: ["configurations", "simType"], }) .refine(data => { if (data.configurations?.simType === "eSIM") { return data.configurations.eid !== undefined && data.configurations.eid.length > 0; } return true; }, { message: "eSIM orders must provide EID", path: ["configurations", "eid"], }) .refine(data => { if (data.configurations?.isMnp === "true") { const required = ["mnpNumber", "portingLastName", "portingFirstName"]; return required.every(field => data.configurations?.[field] !== undefined); } return true; }, { message: "MNP orders must provide porting information", path: ["configurations"], }); exports.skuValidationSchema = zod_1.z.object({ sku: zod_1.z.string().min(1, "SKU is required"), isActive: zod_1.z.boolean(), productType: zod_1.z.enum(["Internet", "SIM", "VPN", "Addon", "Fee"]), price: zod_1.z.number().nonnegative(), currency: zod_1.z.string().length(3), }); exports.userMappingValidationSchema = zod_1.z.object({ userId: identifiers_1.userIdSchema, sfAccountId: zod_1.z.string().min(15, "Salesforce Account ID must be at least 15 characters"), whmcsClientId: zod_1.z.number().int().positive("WHMCS Client ID must be positive"), }); exports.paymentMethodValidationSchema = zod_1.z.object({ userId: identifiers_1.userIdSchema, whmcsClientId: zod_1.z.number().int().positive(), hasValidPaymentMethod: zod_1.z.boolean(), paymentMethods: zod_1.z.array(zod_1.z.object({ id: zod_1.z.string(), type: zod_1.z.string(), isDefault: zod_1.z.boolean(), })), }); //# sourceMappingURL=orders.js.map