From a4d2bde65440da5f6e79a7970658de2a2015388c Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Wed, 4 May 2022 13:56:11 +0000 Subject: [PATCH] Added multiple search terms capability --- server/src/resolvers/Query/userPresence.js | 50 +++++++++++++--------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/server/src/resolvers/Query/userPresence.js b/server/src/resolvers/Query/userPresence.js index cd91107..a75bcea 100644 --- a/server/src/resolvers/Query/userPresence.js +++ b/server/src/resolvers/Query/userPresence.js @@ -21,28 +21,36 @@ export async function userPresence(_, { search, onlyServants }) { ({ extensionAttribute2 }) => extensionAttribute2 == 'Técnico-administrativo' || extensionAttribute2 == 'Docente' ) - search = search.toLowerCase().trim() - const filteredUsers = search - ? usersWithWifiDevices.filter( - user => - Object.keys(user).some( - key => typeof user[key] == 'string' && user[key].contains(search) - ) || - user.wifiDevices?.some( - device => - device.status != 'OFFLINE' && - ( - device.ip?.startsWith(search) || - device.apName?.contains(search) || - device.essid?.contains(search) || - device.hostname?.contains(search) || - device.accessPoint?.name?.contains(search) || - device.accessPoint?.local?.contains(search) - ) - ) - ) - : usersWithWifiDevices + const searchTerms = search.split(' ') + + let filteredUsers = usersWithWifiDevices + + if (search) { + search = search.toLowerCase().trim() + + for (const term of searchTerms) { + + filteredUsers = filteredUsers.filter( + user => + Object.keys(user).some( + key => typeof user[key] == 'string' && user[key].contains(term) + ) || + user.wifiDevices?.some( + device => + device.status != 'OFFLINE' && + ( + device.ip?.startsWith(term) || + device.apName?.contains(term) || + device.essid?.contains(term) || + device.hostname?.contains(term) || + device.accessPoint?.name?.contains(term) || + device.accessPoint?.local?.contains(term) + ) + ) + ) + } + } const sortedUsers = filteredUsers .sort((a, b) => b.displayName.localeCompare(a.displayName))