mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* Type app options * Refactor `writeToPersonRecord` to `writeToRecord` * Abstract writing to salesforce record options component * Add option to write to event object on cancellation * Add on booking cancel write to event object to schema * Refactor writing to record on booking option to use `<WriteToObjectSettings />` * Pass event object to crm delete method * When cancelling booking write to event object - App data isn't being read * V1 pass app data to crm service * Undo .env commit * Fix passing event to cancel crm cancel event method * Pass event type metadata to `EventManager` in `handleCancelBooking` * Handle writing to event record * Type fix
67 lines
2.5 KiB
TypeScript
67 lines
2.5 KiB
TypeScript
import { z } from "zod";
|
|
|
|
import { eventTypeAppCardZod } from "../eventTypeAppCardZod";
|
|
import { SalesforceRecordEnum, WhenToWriteToRecord, SalesforceFieldType } from "./lib/enums";
|
|
|
|
export const writeToBookingEntry = z.object({
|
|
value: z.union([z.string(), z.boolean()]),
|
|
fieldType: z.nativeEnum(SalesforceFieldType),
|
|
whenToWrite: z.nativeEnum(WhenToWriteToRecord),
|
|
});
|
|
|
|
export const writeToRecordEntrySchema = z.object({
|
|
field: z.string(),
|
|
fieldType: z.nativeEnum(SalesforceFieldType),
|
|
value: z.union([z.string(), z.boolean()]),
|
|
whenToWrite: z.nativeEnum(WhenToWriteToRecord),
|
|
});
|
|
|
|
export const writeToRecordDataSchema = z.record(z.string(), writeToBookingEntry);
|
|
|
|
export const routingFormOptions = z
|
|
.object({
|
|
rrSkipToAccountLookupField: z.boolean().optional(),
|
|
rrSKipToAccountLookupFieldName: z.string().optional(),
|
|
})
|
|
.optional();
|
|
|
|
export const routingFormIncompleteBookingDataSchema = z.object({
|
|
writeToRecordObject: writeToRecordDataSchema.optional(),
|
|
});
|
|
|
|
const optionalBooleanOnlyRunTimeValidation = z
|
|
.any()
|
|
.refine((val) => typeof val === "boolean" || val === undefined)
|
|
.optional();
|
|
|
|
export const appDataSchema = eventTypeAppCardZod.extend({
|
|
roundRobinLeadSkip: z.boolean().optional(),
|
|
roundRobinSkipCheckRecordOn: z
|
|
.nativeEnum(SalesforceRecordEnum)
|
|
.default(SalesforceRecordEnum.CONTACT)
|
|
.optional(),
|
|
ifFreeEmailDomainSkipOwnerCheck: z.boolean().optional(),
|
|
roundRobinSkipFallbackToLeadOwner: z.boolean().optional(),
|
|
skipContactCreation: z.boolean().optional(),
|
|
createEventOn: z.nativeEnum(SalesforceRecordEnum).default(SalesforceRecordEnum.CONTACT).optional(),
|
|
createNewContactUnderAccount: z.boolean().optional(),
|
|
createLeadIfAccountNull: z.boolean().optional(),
|
|
onBookingWriteToEventObject: z.boolean().optional(),
|
|
onBookingWriteToEventObjectMap: z.record(z.any()).optional(),
|
|
createEventOnLeadCheckForContact: z.boolean().optional(),
|
|
onBookingChangeRecordOwner: z.boolean().optional(),
|
|
onBookingChangeRecordOwnerName: z.string().optional(),
|
|
sendNoShowAttendeeData: z.boolean().optional(),
|
|
sendNoShowAttendeeDataField: z.string().optional(),
|
|
onBookingWriteToRecord: z.boolean().optional(),
|
|
onBookingWriteToRecordFields: z.record(z.string(), writeToBookingEntry).optional(),
|
|
ignoreGuests: z.boolean().optional(),
|
|
onCancelWriteToEventRecord: z.boolean().optional(),
|
|
onCancelWriteToEventRecordFields: z.record(z.string(), writeToBookingEntry).optional(),
|
|
});
|
|
|
|
export const appKeysSchema = z.object({
|
|
consumer_key: z.string().min(1),
|
|
consumer_secret: z.string().min(1),
|
|
});
|