58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import logger from "@calcom/lib/logger";
|
|
import { safeStringify } from "@calcom/lib/safeStringify";
|
|
|
|
const log = logger.getSubLogger({ prefix: ["[getRoutedUsers]"] });
|
|
|
|
export const getRoutedHostsWithContactOwnerAndFixedHosts = <
|
|
T extends { user: { id: number; email: string }; isFixed?: boolean }
|
|
>({
|
|
routedTeamMemberIds,
|
|
hosts,
|
|
contactOwnerEmail,
|
|
}: {
|
|
routedTeamMemberIds: number[] | null;
|
|
hosts: T[];
|
|
contactOwnerEmail: string | null;
|
|
}) => {
|
|
// We don't want to enter a scenario where we have no team members to be booked
|
|
// So, let's just fallback to regular flow if no routedTeamMemberIds are provided
|
|
if (!routedTeamMemberIds || !routedTeamMemberIds.length) {
|
|
return hosts;
|
|
}
|
|
|
|
log.debug(
|
|
"filtering hosts as per routedTeamMemberIds",
|
|
safeStringify({ routedTeamMemberIds, contactOwnerEmail })
|
|
);
|
|
return hosts.filter(
|
|
(host) =>
|
|
routedTeamMemberIds.includes(host.user.id) || host.isFixed || host.user.email === contactOwnerEmail
|
|
);
|
|
};
|
|
|
|
export const getRoutedUsersWithContactOwnerAndFixedUsers = <
|
|
T extends { id: number; isFixed?: boolean; email: string }
|
|
>({
|
|
routedTeamMemberIds,
|
|
users,
|
|
contactOwnerEmail,
|
|
}: {
|
|
routedTeamMemberIds: number[] | null;
|
|
users: T[];
|
|
contactOwnerEmail: string | null;
|
|
}) => {
|
|
// We don't want to enter a scenario where we have no team members to be booked
|
|
// So, let's just fallback to regular flow if no routedTeamMemberIds are provided
|
|
if (!routedTeamMemberIds || !routedTeamMemberIds.length) {
|
|
return users;
|
|
}
|
|
|
|
log.debug(
|
|
"filtering users as per routedTeamMemberIds",
|
|
safeStringify({ routedTeamMemberIds, contactOwnerEmail })
|
|
);
|
|
return users.filter(
|
|
(user) => routedTeamMemberIds.includes(user.id) || user.isFixed || user.email === contactOwnerEmail
|
|
);
|
|
};
|