From 3b02c1bc713230041eac0cdcecaf3ba3dc0fc91a Mon Sep 17 00:00:00 2001 From: Luis Mauro Date: Tue, 23 Jan 2024 19:55:17 -0600 Subject: [PATCH 1/3] feat: PROSVC-55 findRoomsByAgentId --- src/server/bridges/LivechatBridge.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/server/bridges/LivechatBridge.ts b/src/server/bridges/LivechatBridge.ts index 48ab69942..f62efb914 100644 --- a/src/server/bridges/LivechatBridge.ts +++ b/src/server/bridges/LivechatBridge.ts @@ -104,6 +104,12 @@ export abstract class LivechatBridge extends BaseBridge { } } + public async doFindRoomsByAgentId(agentId: string, appId: string): Promise> { + if (this.hasReadPermission(appId, 'livechat-room')) { + return this.findRoomsByAgentId(agentId, appId); + } + } + public async doFindRooms(visitor: IVisitor, departmentId: string | null, appId: string): Promise> { if (this.hasReadPermission(appId, 'livechat-room')) { return this.findRooms(visitor, departmentId, appId); @@ -171,6 +177,8 @@ export abstract class LivechatBridge extends BaseBridge { protected abstract closeRoom(room: ILivechatRoom, comment: string, closer: IUser | undefined, appId: string): Promise; + protected abstract findRoomsByAgentId(agentId: string, appId: string): Promise>; + protected abstract findRooms(visitor: IVisitor, departmentId: string | null, appId: string): Promise>; protected abstract findDepartmentByIdOrName(value: string, appId: string): Promise; From 0968b7dc1d555e2dce42229aa7f9f88a7bb2668e Mon Sep 17 00:00:00 2001 From: Luis Mauro Date: Wed, 24 Jan 2024 08:09:47 -0600 Subject: [PATCH 2/3] add missing implementations --- src/definition/accessors/ILivechatRead.ts | 1 + src/server/accessors/LivechatRead.ts | 4 ++++ tests/test-data/bridges/livechatBridge.ts | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/src/definition/accessors/ILivechatRead.ts b/src/definition/accessors/ILivechatRead.ts index 6a7650949..2875284d6 100644 --- a/src/definition/accessors/ILivechatRead.ts +++ b/src/definition/accessors/ILivechatRead.ts @@ -17,6 +17,7 @@ export interface ILivechatRead { isOnlineAsync(departmentId?: string): Promise; getDepartmentsEnabledWithAgents(): Promise>; getLivechatRooms(visitor: IVisitor, departmentId?: string): Promise>; + getLivechatRoomsByAgentId(agentId: string): Promise>; /** * @deprecated This method does not adhere to the conversion practices applied * elsewhere in the Apps-Engine and will be removed in the next major version. diff --git a/src/server/accessors/LivechatRead.ts b/src/server/accessors/LivechatRead.ts index d58a4a531..079bc7e62 100644 --- a/src/server/accessors/LivechatRead.ts +++ b/src/server/accessors/LivechatRead.ts @@ -30,6 +30,10 @@ export class LivechatRead implements ILivechatRead { return this.livechatBridge.doFindRooms(visitor, departmentId, this.appId); } + public getLivechatRoomsByAgentId(agentId: string): Promise> { + return this.livechatBridge.doFindRoomsByAgentId(agentId, this.appId); + } + /** * @deprecated This method does not adhere to the conversion practices applied * elsewhere in the Apps-Engine and will be removed in the next major version. diff --git a/tests/test-data/bridges/livechatBridge.ts b/tests/test-data/bridges/livechatBridge.ts index c9beb66f4..8470a1c93 100644 --- a/tests/test-data/bridges/livechatBridge.ts +++ b/tests/test-data/bridges/livechatBridge.ts @@ -70,6 +70,10 @@ export class TestLivechatBridge extends LivechatBridge { throw new Error('Method not implemented'); } + public findRoomsByAgentId(agentId: string, appId: string): Promise { + throw new Error('Method not implemented'); + } + public findDepartmentByIdOrName(value: string, appId: string): Promise { throw new Error('Method not implemented'); } From 46c0ed99f91f39c6a3842b80e5c22ec2daa9929c Mon Sep 17 00:00:00 2001 From: Luis Mauro Date: Mon, 29 Jan 2024 10:08:39 -0600 Subject: [PATCH 3/3] add different method to just return the total Rooms --- src/definition/accessors/ILivechatRead.ts | 1 + src/server/accessors/LivechatRead.ts | 4 ++++ src/server/bridges/LivechatBridge.ts | 8 ++++++++ tests/test-data/bridges/livechatBridge.ts | 4 ++++ 4 files changed, 17 insertions(+) diff --git a/src/definition/accessors/ILivechatRead.ts b/src/definition/accessors/ILivechatRead.ts index 2875284d6..91bdd487e 100644 --- a/src/definition/accessors/ILivechatRead.ts +++ b/src/definition/accessors/ILivechatRead.ts @@ -18,6 +18,7 @@ export interface ILivechatRead { getDepartmentsEnabledWithAgents(): Promise>; getLivechatRooms(visitor: IVisitor, departmentId?: string): Promise>; getLivechatRoomsByAgentId(agentId: string): Promise>; + getLivechatTotalRoomsByAgentId(agentId: string): Promise; /** * @deprecated This method does not adhere to the conversion practices applied * elsewhere in the Apps-Engine and will be removed in the next major version. diff --git a/src/server/accessors/LivechatRead.ts b/src/server/accessors/LivechatRead.ts index 079bc7e62..ef7503976 100644 --- a/src/server/accessors/LivechatRead.ts +++ b/src/server/accessors/LivechatRead.ts @@ -30,6 +30,10 @@ export class LivechatRead implements ILivechatRead { return this.livechatBridge.doFindRooms(visitor, departmentId, this.appId); } + public getLivechatTotalRoomsByAgentId(agentId: string): Promise { + return this.livechatBridge.doCountRoomsByAgentId(agentId, this.appId); + } + public getLivechatRoomsByAgentId(agentId: string): Promise> { return this.livechatBridge.doFindRoomsByAgentId(agentId, this.appId); } diff --git a/src/server/bridges/LivechatBridge.ts b/src/server/bridges/LivechatBridge.ts index f62efb914..8ca7b542f 100644 --- a/src/server/bridges/LivechatBridge.ts +++ b/src/server/bridges/LivechatBridge.ts @@ -104,6 +104,12 @@ export abstract class LivechatBridge extends BaseBridge { } } + public async doCountRoomsByAgentId(agentId: string, appId: string): Promise { + if (this.hasReadPermission(appId, 'livechat-room')) { + return this.countRoomsByAgentId(agentId, appId); + } + } + public async doFindRoomsByAgentId(agentId: string, appId: string): Promise> { if (this.hasReadPermission(appId, 'livechat-room')) { return this.findRoomsByAgentId(agentId, appId); @@ -177,6 +183,8 @@ export abstract class LivechatBridge extends BaseBridge { protected abstract closeRoom(room: ILivechatRoom, comment: string, closer: IUser | undefined, appId: string): Promise; + protected abstract countRoomsByAgentId(agentId: string, appId: string): Promise; + protected abstract findRoomsByAgentId(agentId: string, appId: string): Promise>; protected abstract findRooms(visitor: IVisitor, departmentId: string | null, appId: string): Promise>; diff --git a/tests/test-data/bridges/livechatBridge.ts b/tests/test-data/bridges/livechatBridge.ts index 8470a1c93..9898be1ae 100644 --- a/tests/test-data/bridges/livechatBridge.ts +++ b/tests/test-data/bridges/livechatBridge.ts @@ -74,6 +74,10 @@ export class TestLivechatBridge extends LivechatBridge { throw new Error('Method not implemented'); } + public countRoomsByAgentId(agentId: string, appId: string): Promise { + throw new Error('Method not implemented'); + } + public findDepartmentByIdOrName(value: string, appId: string): Promise { throw new Error('Method not implemented'); }