diff --git a/packages/features/eventtypes/components/EventType.tsx b/packages/features/eventtypes/components/EventType.tsx index 202ce3750c..6880badb49 100644 --- a/packages/features/eventtypes/components/EventType.tsx +++ b/packages/features/eventtypes/components/EventType.tsx @@ -504,7 +504,7 @@ export const EventType = (props: EventTypeSetupProps & { allActiveWorkflows?: Wo length, ...input } = dirtyValues; - if (!Number(length)) throw new Error(t("event_setup_length_error")); + if (length && !Number(length)) throw new Error(t("event_setup_length_error")); if (bookingLimits) { const isValid = validateIntervalLimitOrder(bookingLimits); @@ -633,6 +633,11 @@ export const EventType = (props: EventTypeSetupProps & { allActiveWorkflows?: Wo id="event-type-form" handleSubmit={async (values) => { const { children } = values; + const conflicts = children.filter((child) => child.owner.eventTypeSlugs.includes(values.slug)); + if (conflicts.length > 0) { + setSlugExistsChildrenDialogOpen(conflicts); + return; + } const dirtyValues = getDirtyFields(values); const dirtyFieldExists = Object.keys(dirtyValues).length !== 0; const { diff --git a/packages/features/eventtypes/components/tabs/assignment/EventTeamAssignmentTab.tsx b/packages/features/eventtypes/components/tabs/assignment/EventTeamAssignmentTab.tsx index c8ee253534..2c025529d6 100644 --- a/packages/features/eventtypes/components/tabs/assignment/EventTeamAssignmentTab.tsx +++ b/packages/features/eventtypes/components/tabs/assignment/EventTeamAssignmentTab.tsx @@ -422,7 +422,12 @@ export const EventTeamAssignmentTab = ({ .map((member) => mapUserToValue(member, t("pending"))); const childrenEventTypeOptions = teamMembers.filter(pendingMembers).map((member) => { return mapMemberToChildrenOption( - { ...member, eventTypes: member.eventTypes.filter((et) => et !== eventType.slug) }, + { + ...member, + eventTypes: member.eventTypes.filter( + (et) => et !== eventType.slug || !eventType.children.some((c) => c.owner.id === member.id) + ), + }, eventType.slug, t("pending") );