Skip to content

Commit

Permalink
allow filtering by call direction on voip/rooms endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
murtaza98 committed May 27, 2022
1 parent 214d811 commit e30cf9a
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 2 deletions.
7 changes: 5 additions & 2 deletions apps/meteor/app/api/server/v1/voip/rooms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const validateDateParams = (property: string, date: DateParam = {}): DateParam =
const parseAndValidate = (property: string, date?: string): DateParam => {
return validateDateParams(property, parseDateParams(date));
};
const VoipRoomDirectionValidator = Match.Maybe(Match.Where((value: string) => ['inbound', 'outbound'].includes(value)));
/**
* @openapi
* /voip/server/api/v1/voip/room
Expand Down Expand Up @@ -89,7 +90,7 @@ API.v1.addRoute(
token: String,
agentId: Match.Maybe(String),
rid: Match.Maybe(String),
direction: Match.Maybe(Match.Where((value: string) => ['inbound', 'outbound'].includes(value))),
direction: VoipRoomDirectionValidator,
};
check(this.queryParams, defaultCheckParams);

Expand Down Expand Up @@ -139,14 +140,15 @@ API.v1.addRoute(
async get() {
const { offset, count } = this.getPaginationItems();
const { sort, fields } = this.parseJsonQuery();
const { agents, open, tags, queue, visitorId } = this.requestParams();
const { agents, open, tags, queue, visitorId, direction } = this.requestParams();
const { createdAt: createdAtParam, closedAt: closedAtParam } = this.requestParams();

check(agents, Match.Maybe([String]));
check(open, Match.Maybe(String));
check(tags, Match.Maybe([String]));
check(queue, Match.Maybe(String));
check(visitorId, Match.Maybe(String));
check(direction, VoipRoomDirectionValidator);

// Reusing same L room permissions for simplicity
const hasAdminAccess = hasPermission(this.userId, 'view-livechat-rooms');
Expand All @@ -167,6 +169,7 @@ API.v1.addRoute(
visitorId,
createdAt,
closedAt,
direction,
options: { sort, offset, count, fields },
}),
);
Expand Down
5 changes: 5 additions & 0 deletions apps/meteor/app/models/server/raw/VoipRooms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ export class VoipRoomsRaw extends BaseRaw<IVoipRoom> {
tags,
queue,
visitorId,
direction,
options = {},
}: {
agents?: string[];
Expand All @@ -117,6 +118,7 @@ export class VoipRoomsRaw extends BaseRaw<IVoipRoom> {
tags?: string[];
queue?: string;
visitorId?: string;
direction?: IVoipRoom['direction'];
options?: {
sort?: Record<string, unknown>;
count?: number;
Expand Down Expand Up @@ -161,6 +163,9 @@ export class VoipRoomsRaw extends BaseRaw<IVoipRoom> {
if (queue) {
query.queue = queue;
}
if (direction) {
query.direction = direction;
}

return this.find(query, {
sort: options.sort || { name: 1 },
Expand Down
3 changes: 3 additions & 0 deletions apps/meteor/server/services/omnichannel-voip/internalTypes.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { IVoipRoom } from '@rocket.chat/core-typings';

export type FindVoipRoomsParams = {
agents?: string[];
open?: boolean;
Expand All @@ -12,4 +14,5 @@ export type FindVoipRoomsParams = {
fields?: Record<string, unknown>;
offset?: number;
};
direction?: IVoipRoom['direction'];
};
2 changes: 2 additions & 0 deletions apps/meteor/server/services/omnichannel-voip/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,7 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn
visitorId,
tags,
queue,
direction,
options: { offset = 0, count, fields, sort } = {},
}: FindVoipRoomsParams): Promise<PaginatedResult<{ rooms: IVoipRoom[] }>> {
const cursor = this.voipRoom.findRoomsWithCriteria({
Expand All @@ -407,6 +408,7 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn
tags,
queue,
visitorId,
direction,
options: {
sort: sort || { ts: -1 },
offset,
Expand Down
1 change: 1 addition & 0 deletions packages/rest-typings/src/v1/voip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ export type VoipEndpoints = {
tags?: string[];
queue?: string;
visitorId?: string;
direction?: IVoipRoom['direction'];
}) => PaginatedResult<{ rooms: IVoipRoom[] }>;
};
'voip/room.close': {
Expand Down

0 comments on commit e30cf9a

Please sign in to comment.