import { useLocale } from "@calcom/lib/hooks/useLocale"; export type MembersMatchResultType = { isUsingAttributeWeights: boolean; eventTypeRedirectUrl: string | null; contactOwnerEmail: string | null; teamMembersMatchingAttributeLogic: { id: number; name: string | null; email: string }[] | null; perUserData: { bookingsCount: Record; bookingShortfalls: Record | null; calibrations: Record | null; weights: Record | null; } | null; checkedFallback: boolean; mainWarnings: string[] | null; fallbackWarnings: string[] | null; } | null; export const TeamMembersMatchResult = ({ membersMatchResult, }: { membersMatchResult: MembersMatchResultType; }) => { const { t } = useLocale(); if (!membersMatchResult) return null; const renderQueue = () => { if (isNoLogicFound(membersMatchResult.teamMembersMatchingAttributeLogic)) { return
{t("no_active_queues")}
; } const matchingMembers = membersMatchResult.teamMembersMatchingAttributeLogic; if (matchingMembers.length && membersMatchResult.perUserData) { const perUserData = membersMatchResult.perUserData; return (
{membersMatchResult.perUserData.weights ? : null} {membersMatchResult.perUserData.calibrations ? ( ) : null} {membersMatchResult.perUserData.bookingShortfalls ? ( ) : null} {matchingMembers.map((member, index) => ( {perUserData.weights ? ( ) : null} {perUserData.calibrations ? ( ) : null} {perUserData.bookingShortfalls ? ( ) : null} ))}
# {t("email")} {t("bookings")}{t("weight")}{t("calibration")}{t("shortfall")}
{index + 1} {member.email} {perUserData.bookingsCount[member.id] ?? 0}{perUserData.weights[member.id] ?? 0}{perUserData.calibrations[member.id] ?? 0}{perUserData.bookingShortfalls[member.id] ?? 0}
); } return ( {t("all_assigned_members_of_the_team_event_type_consider_tweaking_fallback_to_have_a_match")} ); }; return (
{membersMatchResult.contactOwnerEmail ? (
{t("contact_owner")}:{" "} {membersMatchResult.contactOwnerEmail}
) : ( <> )}
{renderQueue()}
); function isNoLogicFound( teamMembersMatchingAttributeLogic: NonNullable["teamMembersMatchingAttributeLogic"] ): teamMembersMatchingAttributeLogic is null { return teamMembersMatchingAttributeLogic === null; } };