RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/livechat/server/api/lib/queue.ts

Summary

Maintainability
A
1 hr
Test Coverage
import { LivechatRooms } from '@rocket.chat/models';
import type { PaginatedResult } from '@rocket.chat/rest-typings';

export async function findQueueMetrics({
    agentId,
    includeOfflineAgents,
    departmentId,
    pagination: { offset, count, sort },
}: {
    agentId?: string;
    includeOfflineAgents?: boolean;
    departmentId?: string;
    pagination: { offset: number; count: number; sort: Record<string, number> };
}): Promise<
    PaginatedResult<{
        queue: Array<{
            _id: string;
            user: { _id: string; userId: string; username: string; status: string };
            department: { _id: string; name: string };
            chats: number;
        }>;
    }>
> {
    const result = await LivechatRooms.getQueueMetrics({
        departmentId,
        agentId,
        includeOfflineAgents,
        options: {
            sort: sort || { chats: -1 },
            offset,
            count,
        },
    });

    const {
        sortedResults: queue,
        totalCount: [{ total } = { total: 0 }],
    } = result[0];

    return {
        queue,
        count: queue.length,
        offset,
        total,
    };
}