diff --git a/apps/meteor/server/services/omnichannel-voip/helper.ts b/apps/meteor/ee/app/livechat-enterprise/server/lib/voip/helper.ts similarity index 93% rename from apps/meteor/server/services/omnichannel-voip/helper.ts rename to apps/meteor/ee/app/livechat-enterprise/server/lib/voip/helper.ts index 0e0c1f8c90c99..b0e52bb2a8d88 100644 --- a/apps/meteor/server/services/omnichannel-voip/helper.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/voip/helper.ts @@ -1,6 +1,6 @@ import { IVoipRoom } from '@rocket.chat/core-typings'; -import { PbxEvent } from '../../../app/models/server/raw'; +import { PbxEvent } from '../../../../../../app/models/server/raw'; export const calculateOnHoldTimeForRoom = async (room: IVoipRoom, closedAt: Date): Promise => { if (!room.callUniqueId) { diff --git a/apps/meteor/ee/app/livechat-enterprise/server/services/voipService.ts b/apps/meteor/ee/app/livechat-enterprise/server/services/voipService.ts index 77ba89dc25cbf..e1732a6c9018a 100644 --- a/apps/meteor/ee/app/livechat-enterprise/server/services/voipService.ts +++ b/apps/meteor/ee/app/livechat-enterprise/server/services/voipService.ts @@ -1,14 +1,16 @@ -import { IRoomClosingInfo } from '@rocket.chat/core-typings'; +import { IRoomClosingInfo, IVoipRoom } from '@rocket.chat/core-typings'; import { IOmniRoomClosingMessage } from '../../../../../server/services/omnichannel-voip/internalTypes'; import { OmnichannelVoipService } from '../../../../../server/services/omnichannel-voip/service'; import { overwriteClassOnLicense } from '../../../license/server'; +import { calculateOnHoldTimeForRoom } from '../lib/voip/helper'; overwriteClassOnLicense('livechat-enterprise', OmnichannelVoipService, { getRoomClosingData( _originalFn: any, closeInfo: IRoomClosingInfo, closeSystemMsgData: IOmniRoomClosingMessage, + room: IVoipRoom, sysMessageId: 'voip-call-wrapup' | 'voip-call-ended-unexpectedly', options?: { comment?: string; tags?: string[] }, ): { closeInfo: IRoomClosingInfo; closeSystemMsgData: IOmniRoomClosingMessage } { @@ -24,6 +26,10 @@ overwriteClassOnLicense('livechat-enterprise', OmnichannelVoipService, { closeSystemMsgData.t = 'voip-call-ended'; } + const now = new Date(); + const callTotalHoldTime = Promise.await(calculateOnHoldTimeForRoom(room, now)); + closeInfo.callTotalHoldTime = callTotalHoldTime; + return { closeInfo, closeSystemMsgData }; }, }); diff --git a/apps/meteor/server/services/omnichannel-voip/service.ts b/apps/meteor/server/services/omnichannel-voip/service.ts index a7eb74f1c055a..8f79f22cb48a4 100644 --- a/apps/meteor/server/services/omnichannel-voip/service.ts +++ b/apps/meteor/server/services/omnichannel-voip/service.ts @@ -29,7 +29,6 @@ import { PbxEventsRaw } from '../../../app/models/server/raw/PbxEvents'; import { sendMessage } from '../../../app/lib/server/functions/sendMessage'; import { FindVoipRoomsParams, IOmniRoomClosingMessage } from './internalTypes'; import { api } from '../../sdk/api'; -import { calculateOnHoldTimeForRoom } from './helper'; export class OmnichannelVoipService extends ServiceClassInternal implements IOmnichannelVoipService { protected name = 'omnichannel-voip'; @@ -280,7 +279,7 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn } let { closeInfo, closeSystemMsgData } = await this.getBaseRoomClosingData(closerParam, room, sysMessageId, options); - const finalClosingData = this.getRoomClosingData(closeInfo, closeSystemMsgData, sysMessageId, options); + const finalClosingData = this.getRoomClosingData(closeInfo, closeSystemMsgData, room, sysMessageId, options); closeInfo = finalClosingData.closeInfo; closeSystemMsgData = finalClosingData.closeSystemMsgData; @@ -300,7 +299,8 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn getRoomClosingData( closeInfo: IRoomClosingInfo, - closeSystemMsgData: any, + closeSystemMsgData: IOmniRoomClosingMessage, + _room: IVoipRoom, _sysMessageId: 'voip-call-wrapup' | 'voip-call-ended-unexpectedly', _options?: { comment?: string; tags?: string[] }, ): { closeInfo: IRoomClosingInfo; closeSystemMsgData: IOmniRoomClosingMessage } { @@ -315,13 +315,11 @@ export class OmnichannelVoipService extends ServiceClassInternal implements IOmn ): Promise<{ closeInfo: IRoomClosingInfo; closeSystemMsgData: IOmniRoomClosingMessage }> { const now = new Date(); const closer = isILivechatVisitor(closerParam) ? 'visitor' : 'user'; - const callTotalHoldTime = await calculateOnHoldTimeForRoom(room, now); const closeData: IRoomClosingInfo = { closedAt: now, callDuration: now.getTime() - room.ts.getTime(), closer, - callTotalHoldTime, closedBy: { _id: closerParam._id, username: closerParam.username,