diff --git a/server/src/resolvers/Query/wifiUsers.js b/server/src/resolvers/Query/wifiUsers.js index 64d1270..341523c 100644 --- a/server/src/resolvers/Query/wifiUsers.js +++ b/server/src/resolvers/Query/wifiUsers.js @@ -34,17 +34,29 @@ export async function wifiUsers(parent, { take = 10, skip = 0, search }) { ] } - return { - data: prisma.user.findMany({ - where, - include: { - wifiDevices: true - }, - orderBy: [{ wifiDevices: { _count: 'desc' } }, { displayName: 'asc' }], - take, - skip - }), + const wifiUsers = await prisma.user.findMany({ + where, + include: { + wifiDevices: true + }, + orderBy: [{ wifiDevices: { _count: 'desc' } }, { displayName: 'asc' }] + }) - total: prisma.user.count({ where }) + // Order by number of online devices + const sortedWifiUsers = wifiUsers.sort((a, b) => { + const aOnline = a.wifiDevices.filter(d => d.status === 'ONLINE').length + const bOnline = b.wifiDevices.filter(d => d.status === 'ONLINE').length + + return bOnline - aOnline + }) + + // Paginate the results + const data = sortedWifiUsers.slice(skip, skip + take) + + const total = await prisma.user.count({ where }) + + return { + data, + total } }