function getParticipantPool(bookingType) {
if (bookingType) {
return _.filter(users, (user) => {
if (
user.fields.orgs &&
user.fields.orgs.length &&
_.find(user.fields.orgs, ["sys.id", bookingType.fields.org.sys.id])
) {
return false;
}
if (bookingType.fields.platforms && bookingType.fields.platforms.length) {
if (
_.intersectionBy(
bookingType.fields.platforms,
user.fields.platforms,
"sys.id"
).length
) {
return false;
}
}
if (
bookingType.fields.targetGroups &&
bookingType.fields.targetGroups.length
) {
if (
_.intersectionBy(
bookingType.fields.targetGroups,
user.fields.targetGroups,
"sys.id"
).length
) {
return false;
}
}
if (
_.find(bookingsByBookingTypeId[bookingType.sys.id], (booking) => {
return _.find(booking.fields.participants, ["sys.id", user.sys.id]);
})
) {
return false;
}
if (
bookingType.fields.orgUsersRequired &&
bookingType.fields.orgUsersRequired.length &&
!getSharedLanguages(...bookingType.fields.orgUsersRequired, user).length
) {
return false;
}
return true;
});
}
return [];
}