Files
calendar/packages/lib/bookings/getRoutedUsers.ts
T
654a204878 feat: Attribute based routing from Team Routing Form to Team Event(with assigned users matching the attribute logic) (#16823)
* Initial commit

* routingForm to Booking a particular team member working

* Happy path working

* Fixes

* Fix router query params forwarding

* Add basicConfig within app

* Tests

* More tests

* Update packages/app-store/routing-forms/components/SingleForm.tsx

Co-authored-by: Omar López <zomars@me.com>

---------

Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
2024-10-08 21:12:32 +05:30

39 lines
1.4 KiB
TypeScript

import { safeStringify } from "@calcom/lib/safeStringify";
import logger from "@calcom/lib/logger";
const log = logger.getSubLogger({ prefix: ["[getRoutedUsers]"] });
export const getRoutedHosts = <T extends { user: { id: number }; isFixed?: boolean }>({
routedTeamMemberIds,
hosts,
}: {
routedTeamMemberIds: number[] | null;
hosts: T[];
}) => {
// 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 }));
return hosts.filter((host) => routedTeamMemberIds.includes(host.user.id) || host.isFixed);
};
export const getRoutedUsers = <T extends { id: number; isFixed?: boolean }>({
routedTeamMemberIds,
users,
}: {
routedTeamMemberIds: number[] | null;
users: T[];
}) => {
// 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 }));
return users.filter((user) => routedTeamMemberIds.includes(user.id) || user.isFixed);
};