hgs-twilio-class-lib 1.1.66 → 1.1.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AWSConfig = void 0;
4
4
  exports.AWSConfig = {
5
- region: "",
6
- service: "",
7
- accessKeyId: "",
8
- secretAccessKey: ""
5
+ region: "23ed2",
6
+ service: "1312",
7
+ accessKeyId: "1313",
8
+ secretAccessKey: "13132"
9
9
  };
@@ -24,7 +24,6 @@ export declare const databaseConfig: {
24
24
  navigationTable: string;
25
25
  realTimeReportWGDetailsTable: string;
26
26
  realTimeReportQueueDetailsTable: string;
27
- realTimeReportWGDetailsCESTable: string;
28
27
  playbackscreenrecordingsTable: string;
29
28
  taskInfoPanelTable: string;
30
29
  channelSettingsTable: string;
@@ -27,7 +27,6 @@ exports.databaseConfig = {
27
27
  navigationTable: "navigation",
28
28
  realTimeReportWGDetailsTable: "realTimeReportWGDetails",
29
29
  realTimeReportQueueDetailsTable: "realTimeReportQueueDetails",
30
- realTimeReportWGDetailsCESTable: "realTimeReportWGDetailsCES",
31
30
  playbackscreenrecordingsTable: "Recordings-QA",
32
31
  taskInfoPanelTable: "taskInfoPanel",
33
32
  channelSettingsTable: "channelSettings",
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TwilioConfig = void 0;
4
4
  exports.TwilioConfig = {
5
- accountSid: "",
6
- authToken: "",
5
+ accountSid: "ACa22536623c14d7683915f7af13202252",
6
+ authToken: "a32315ca28720f525ba898b2bf82ad6e",
7
7
  };
@@ -26,8 +26,9 @@ const QuickLinkController_1 = require("./twilio/QuickLinkController");
26
26
  const NavigationController_1 = require("./twilio/NavigationController");
27
27
  const CallbackAndVoicemailController_1 = require("./twilio/CallbackAndVoicemailController");
28
28
  const QualityFormsController_1 = require("./twilio/QualityFormsController");
29
- const RealTimeReportsWGDetailsController_1 = require("./twilio/RealTimeReportsWGDetailsController");
30
29
  const RealTimeReportQueueDetailsController_1 = require("./twilio/RealTimeReportQueueDetailsController");
30
+ const RealTimeReportsWGDetailsController_1 = require("./twilio/RealTimeReportsWGDetailsController");
31
+ const RTRWGQueueStatisticsCESController_1 = require("./twilio/RTRWGQueueStatisticsCESController");
31
32
  const PlaybackScreenrecordings_1 = require("./aws/PlaybackScreenrecordings");
32
33
  const AWSConnectAPIConfig_1 = require("../aws/impl/AWSConnectAPIConfig");
33
34
  const AWSClient_1 = require("../aws/impl/AWSClient");
@@ -57,7 +58,6 @@ const ChannelSettingTaskInfoController_1 = require("./twilio/ChannelSettingTaskI
57
58
  const TaskInfoPanelController_1 = require("./twilio/TaskInfoPanelController");
58
59
  const AgentScorecardController_1 = require("./twilio/AgentScorecardController");
59
60
  const AgentActionsController_1 = require("./twilio/AgentActionsController");
60
- const RealTimeReportsWGDetailsControllerCES_1 = require("./twilio/RealTimeReportsWGDetailsControllerCES");
61
61
  let twilConfig = new TwilioAuthTokenConfig_1.TwilioAuthTokenConfig(TwilioConfig_1.TwilioConfig.accountSid, TwilioConfig_1.TwilioConfig.authToken);
62
62
  let twilioClient = new TwilioClient_1.TwilioClient(twilConfig);
63
63
  let AwsConfig = new AWSConnectAPIConfig_1.AWSConnectAPIConfig(AWSConfig_1.AWSConfig.region, AWSConfig_1.AWSConfig.service, AWSConfig_1.AWSConfig.accessKeyId, AWSConfig_1.AWSConfig.secretAccessKey);
@@ -152,8 +152,9 @@ MainController.controllers = {
152
152
  callbackAndVoiceMail: CallbackAndVoicemailController_1.CallbackAndVoicemailController,
153
153
  navaigation: NavigationController_1.NavigationController,
154
154
  qualityForms: QualityFormsController_1.QualityFormsController,
155
- realtimeReportsWGDetails: RealTimeReportsWGDetailsController_1.RealTimeReportsWGDetailsController,
156
155
  realtimeQueueDetails: RealTimeReportQueueDetailsController_1.RealTimeReportsQueueDetailsController,
156
+ realtimeReportsWGDetails: RealTimeReportsWGDetailsController_1.RealTimeReportsWGDetailsController,
157
+ realtimeQueueDetailsCES: RTRWGQueueStatisticsCESController_1.RTReportsQueueDetailsCESController,
157
158
  hoopProfilesList: HoopProfilesListController_1.HoopProfilesListController,
158
159
  hoopOverrideBranches: HoopOverrideBranchesController_1.HoopOverrideBranchesController,
159
160
  hoopOperations: HoopOperationsController_1.HoopOperationsController,
@@ -171,6 +172,5 @@ MainController.controllers = {
171
172
  channelSettings: ChannelSettingsController_1.ChannelSettingsController,
172
173
  channelSettingsTaskInfo: ChannelSettingTaskInfoController_1.ChannelSettingTaskInfoController,
173
174
  agentActions: AgentActionsController_1.AgentActionsController,
174
- realtimeReportsMain: RealTimeReportsWGDetailsControllerCES_1.RealTimeReportsWGDetailsCESController
175
175
  // Add more controllers here as needed
176
176
  };
@@ -0,0 +1,58 @@
1
+ import { SyncServiceFactory } from "../../twilio/impl/sync/SyncServiceFactory";
2
+ import { QueuePeriodStatisticsModel } from "../../models/impl/QueuePeriodStatisticsModelCES";
3
+ import { SearchParameterType } from "../../common/type/SearchParameterType";
4
+ export declare class RTReportsQueueDetailsCESController {
5
+ private _dbFactory;
6
+ private _twilioClient;
7
+ private _syncServiceSid;
8
+ constructor(dbFactory: SyncServiceFactory, twilioClient: any, syncServiceSid: string);
9
+ /**
10
+ * Adds a new workgroup details record to the database.
11
+ *
12
+ * This method validates the provided workgroup details data, opens a connection
13
+ * to the database, starts a transaction, and adds the data to the specified
14
+ * object store. If validation fails or any error occurs during the database
15
+ * operation, it throws an error.
16
+ *
17
+ * @param {WorkGroupDetailsModel} data - The workgroup details data to be added.
18
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
19
+ */
20
+ add(data: QueuePeriodStatisticsModel): Promise<any>;
21
+ /**
22
+ * Edits an existing workgroup details record in the database.
23
+ *
24
+ * This method validates the provided workgroup details data, opens a connection
25
+ * to the database, starts a transaction, and updates the data in the specified
26
+ * object store. If validation fails or any error occurs during the database
27
+ * operation, it throws an error.
28
+ *
29
+ * @param {WorkGroupDetailsModel} data - The workgroup details data to be edited.
30
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
31
+ */
32
+ edit(data: QueuePeriodStatisticsModel): Promise<any>;
33
+ /**
34
+ * Retrieves all workgroup details records from the database.
35
+ *
36
+ * This method opens a connection to the database, starts a transaction,
37
+ * retrieves all records from the specified object store, and returns them.
38
+ * If any error occurs during the database operation, it throws an error.
39
+ *
40
+ * @param {SearchParameterType} query - The search parameters for retrieving data.
41
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
42
+ */
43
+ getAll(query: SearchParameterType): Promise<any>;
44
+ /**
45
+ * Deletes a workgroup details record from the database.
46
+ *
47
+ * This method opens a connection to the database, starts a transaction,
48
+ * and deletes the record with the specified ID from the object store.
49
+ * If any error occurs during the database operation, it throws an error.
50
+ *
51
+ * @param {Pick<WorkGroupDetailsModel, "id">} query - The ID of the record to be deleted.
52
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
53
+ */
54
+ delete(query: {
55
+ period: string;
56
+ tableName: string;
57
+ }): Promise<any>;
58
+ }
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RTReportsQueueDetailsCESController = void 0;
13
+ // Helper to resolve Sync Service SID from friendly name
14
+ function getSyncServiceSidByFriendlyName(twilioClient, friendlyName) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const services = yield twilioClient.sync.v1.services.list();
17
+ const found = services.find((svc) => svc.friendlyName === friendlyName);
18
+ if (!found)
19
+ throw new Error(`Sync Service with friendly name '${friendlyName}' not found.`);
20
+ return found.sid;
21
+ });
22
+ }
23
+ const QueuePeriodStatisticsModelCES_1 = require("../../models/impl/QueuePeriodStatisticsModelCES");
24
+ const WorkGroupQueueStatisticsModelCES_1 = require("../../models/impl/WorkGroupQueueStatisticsModelCES");
25
+ const Common_1 = require("../Common");
26
+ // Importing necessary configurations and types
27
+ const DatabaseConfig_1 = require("../../config/DatabaseConfig");
28
+ class RTReportsQueueDetailsCESController {
29
+ constructor(dbFactory, twilioClient, syncServiceSid) {
30
+ this._dbFactory = dbFactory;
31
+ this._twilioClient = twilioClient;
32
+ this._syncServiceSid = syncServiceSid;
33
+ }
34
+ /**
35
+ * Adds a new workgroup details record to the database.
36
+ *
37
+ * This method validates the provided workgroup details data, opens a connection
38
+ * to the database, starts a transaction, and adds the data to the specified
39
+ * object store. If validation fails or any error occurs during the database
40
+ * operation, it throws an error.
41
+ *
42
+ * @param {WorkGroupDetailsModel} data - The workgroup details data to be added.
43
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
44
+ */
45
+ add(data) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ try {
48
+ console.log("Received_data:............", data);
49
+ const tableName = data.tableName;
50
+ console.log("received_Table_Name:", tableName);
51
+ console.log(" this._dbFactory_2", this._dbFactory);
52
+ const tableNameValidation = WorkGroupQueueStatisticsModelCES_1.WorkGroupQueueStatisticsModel.validateTableName(tableName);
53
+ if (tableNameValidation.length > 0) {
54
+ throw tableNameValidation;
55
+ }
56
+ const periodStats = new QueuePeriodStatisticsModelCES_1.QueuePeriodStatisticsModel(data.aban, data.answer, data.offer, data.sla_target, data.sum_wait_time, data.total_service_level, data.transfer_count);
57
+ if (periodStats.validationMessages.length > 0) {
58
+ throw periodStats.validationMessages; // Throw error if data validation fails
59
+ }
60
+ let syncServiceSid = data.TWILIO_FLEX_SYNC_SID;
61
+ if (!syncServiceSid || typeof syncServiceSid !== "string") {
62
+ // Try to get by friendly name
63
+ const friendlyName = data.TWILIO_FLEX_SYNC_FRIENDLY_NAME;
64
+ if (!friendlyName || typeof friendlyName !== "string") {
65
+ throw new Error("Sync Service SID or friendly name missing/invalid in data.");
66
+ }
67
+ syncServiceSid = yield getSyncServiceSidByFriendlyName(this._twilioClient, friendlyName);
68
+ }
69
+ console.log("Twilio Client and Sync Service SID are configured.", this._twilioClient, syncServiceSid);
70
+ // Ensure Sync Map exists (or create if not)
71
+ yield (0, Common_1.createOrUpdateSyncMap)(this._twilioClient, syncServiceSid, tableName);
72
+ // Set TTL for 3 days (in seconds)
73
+ const ttlSeconds = 3 * 24 * 60 * 60;
74
+ const now = Math.floor(Date.now() / 1000);
75
+ const expiresAt = now + ttlSeconds;
76
+ // Attach TTL to the record
77
+ const recordWithTTL = Object.assign(Object.assign({}, periodStats), { ttl: expiresAt });
78
+ const periodKey = data.period;
79
+ if (!periodKey || typeof periodKey !== "string" || !/^P_\d+$/.test(periodKey)) {
80
+ throw new Error("Required parameter 'period' missing or invalid in data.");
81
+ }
82
+ // Add item to Sync Map using Twilio SDK
83
+ const result = yield this._twilioClient.sync.v1
84
+ .services(syncServiceSid)
85
+ .syncMaps(tableName)
86
+ .syncMapItems.create({ key: periodKey, data: recordWithTTL });
87
+ return result;
88
+ }
89
+ catch (error) {
90
+ console.log("Error occurred:", error);
91
+ return error;
92
+ }
93
+ });
94
+ }
95
+ /**
96
+ * Edits an existing workgroup details record in the database.
97
+ *
98
+ * This method validates the provided workgroup details data, opens a connection
99
+ * to the database, starts a transaction, and updates the data in the specified
100
+ * object store. If validation fails or any error occurs during the database
101
+ * operation, it throws an error.
102
+ *
103
+ * @param {WorkGroupDetailsModel} data - The workgroup details data to be edited.
104
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
105
+ */
106
+ edit(data) {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ try {
109
+ const tableName = data.tableName;
110
+ const tableNameValidation = WorkGroupQueueStatisticsModelCES_1.WorkGroupQueueStatisticsModel.validateTableName(tableName);
111
+ if (tableNameValidation.length > 0) {
112
+ throw tableNameValidation;
113
+ }
114
+ const periodStats = new QueuePeriodStatisticsModelCES_1.QueuePeriodStatisticsModel(data.aban, data.answer, data.offer, data.sla_target, data.sum_wait_time, data.total_service_level, data.transfer_count);
115
+ if (periodStats.validationMessages.length > 0) {
116
+ throw periodStats.validationMessages; // Throw error if data validation fails
117
+ }
118
+ // Open database connection
119
+ const databaseConnection = yield this._dbFactory.asyncOpen(DatabaseConfig_1.databaseConfig.databaseName, DatabaseConfig_1.databaseConfig.version);
120
+ const database = databaseConnection.result;
121
+ // Start database transaction
122
+ const dbTransaction = database.transaction(data.tableName, "readwrite");
123
+ // Access object store
124
+ let table = dbTransaction.objectStore(data.tableName);
125
+ // Update existing data in the object store
126
+ let result = table.put(periodStats, data.period);
127
+ return result;
128
+ }
129
+ catch (error) {
130
+ console.log("Error occurred:", error);
131
+ return error;
132
+ }
133
+ });
134
+ }
135
+ /**
136
+ * Retrieves all workgroup details records from the database.
137
+ *
138
+ * This method opens a connection to the database, starts a transaction,
139
+ * retrieves all records from the specified object store, and returns them.
140
+ * If any error occurs during the database operation, it throws an error.
141
+ *
142
+ * @param {SearchParameterType} query - The search parameters for retrieving data.
143
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
144
+ */
145
+ getAll(query) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ try {
148
+ const tableName = query.tableName;
149
+ const tableNameValidation = WorkGroupQueueStatisticsModelCES_1.WorkGroupQueueStatisticsModel.validateTableName(tableName);
150
+ if (tableNameValidation.length > 0) {
151
+ throw tableNameValidation;
152
+ }
153
+ // Open database connection
154
+ const databaseConnection = yield this._dbFactory.asyncOpen(DatabaseConfig_1.databaseConfig.databaseName, DatabaseConfig_1.databaseConfig.version);
155
+ const database = databaseConnection.result;
156
+ // Start database transaction
157
+ const dbTransaction = database.transaction(tableName, "readwrite");
158
+ // Access object store
159
+ let table = dbTransaction.objectStore(tableName);
160
+ // Retrieve all data from the object store
161
+ let result = yield table.getAll(query);
162
+ return { result, meta: query }; // Return result with meta data
163
+ }
164
+ catch (error) {
165
+ return error;
166
+ }
167
+ });
168
+ }
169
+ /**
170
+ * Deletes a workgroup details record from the database.
171
+ *
172
+ * This method opens a connection to the database, starts a transaction,
173
+ * and deletes the record with the specified ID from the object store.
174
+ * If any error occurs during the database operation, it throws an error.
175
+ *
176
+ * @param {Pick<WorkGroupDetailsModel, "id">} query - The ID of the record to be deleted.
177
+ * @returns {Promise<any>} - Returns a promise with the result of the database operation.
178
+ */
179
+ delete(query) {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ try {
182
+ const tableName = query.tableName;
183
+ const tableNameValidation = WorkGroupQueueStatisticsModelCES_1.WorkGroupQueueStatisticsModel.validateTableName(tableName);
184
+ if (tableNameValidation.length > 0) {
185
+ throw tableNameValidation;
186
+ }
187
+ // Open database connection
188
+ const databaseConnection = yield this._dbFactory.asyncOpen(DatabaseConfig_1.databaseConfig.databaseName, DatabaseConfig_1.databaseConfig.version);
189
+ const database = databaseConnection.result;
190
+ // Start database transaction
191
+ const dbTransaction = database.transaction(tableName, "readwrite");
192
+ // Access object store
193
+ let table = dbTransaction.objectStore(tableName);
194
+ // Delete data from the object store
195
+ let result = table.delete(query.period);
196
+ return result;
197
+ }
198
+ catch (error) {
199
+ console.log("Error occurred:", error);
200
+ return error;
201
+ }
202
+ });
203
+ }
204
+ }
205
+ exports.RTReportsQueueDetailsCESController = RTReportsQueueDetailsCESController;
@@ -40,7 +40,7 @@ class RealTimeReportsWGDetailsController {
40
40
  add(data) {
41
41
  return __awaiter(this, void 0, void 0, function* () {
42
42
  try {
43
- const workgroupDetails = new WorkGroupDetailsModel_1.WorkGroupDetailsModel(data.id, data.uniqueName, data.periodNumber, data.sumWaitTime, data.intOffr, data.intAns, data.intAbn, data.slaTarget, data.totalServiceLevel, data.transferCount, data.createdAt, data.updatedAt, data.eventId);
43
+ const workgroupDetails = new WorkGroupDetailsModel_1.WorkGroupDetailsModel(data.id, data.uniqueName, data.periodNumber, data.sumWaitTime, data.intOffr, data.intAns, data.intAbn, data.slaTarget, data.totalServiceLevel, data.transferCount, data.interactionsWaiting, data.longestInteractionWaiting, data.totalAbanLevel, data.averageSpeedAnswer, data.createdAt, data.updatedAt, data.eventId);
44
44
  if (workgroupDetails.validationMessages.length > 0) {
45
45
  throw workgroupDetails.validationMessages; // Throw error if data validation fails
46
46
  }
@@ -75,7 +75,7 @@ class RealTimeReportsWGDetailsController {
75
75
  edit(data) {
76
76
  return __awaiter(this, void 0, void 0, function* () {
77
77
  try {
78
- const workgroupDetails = new WorkGroupDetailsModel_1.WorkGroupDetailsModel(data.id, data.uniqueName, data.periodNumber, data.sumWaitTime, data.intOffr, data.intAns, data.intAbn, data.slaTarget, data.totalServiceLevel, data.transferCount, data.createdAt, data.updatedAt, data.eventId);
78
+ const workgroupDetails = new WorkGroupDetailsModel_1.WorkGroupDetailsModel(data.id, data.uniqueName, data.periodNumber, data.sumWaitTime, data.intOffr, data.intAns, data.intAbn, data.slaTarget, data.totalServiceLevel, data.transferCount, data.interactionsWaiting, data.longestInteractionWaiting, data.totalAbanLevel, data.averageSpeedAnswer, data.createdAt, data.updatedAt, data.eventId);
79
79
  if (workgroupDetails.validationMessages.length > 0) {
80
80
  throw workgroupDetails.validationMessages; // Throw error if data validation fails
81
81
  }
package/lib/index.d.ts CHANGED
@@ -16,6 +16,7 @@ import { QuickLinksController } from "./controller/twilio/QuickLinkController";
16
16
  import { QualityFormsController } from "./controller/twilio/QualityFormsController";
17
17
  import { RealTimeReportsWGDetailsController } from "./controller/twilio/RealTimeReportsWGDetailsController";
18
18
  import { RealTimeReportsQueueDetailsController } from "./controller/twilio/RealTimeReportQueueDetailsController";
19
+ import { RTReportsQueueDetailsCESController } from "./controller/twilio/RTRWGQueueStatisticsCESController";
19
20
  import { PlaybackScreenrecordingsController } from "./controller/aws/PlaybackScreenrecordings";
20
21
  import { HoopProfilesListController } from "./controller/twilio/HoopProfilesListController";
21
22
  import { HoopOverrideBranchesController } from "./controller/twilio/HoopOverrideBranchesController";
@@ -34,7 +35,6 @@ import { ChannelSettingsController } from "./controller/twilio/ChannelSettingsCo
34
35
  import { TaskInfoPanelController } from "./controller/twilio/TaskInfoPanelController";
35
36
  import { AgentScorecardController } from "./controller/twilio/AgentScorecardController";
36
37
  import { AgentActionsController } from "./controller/twilio/AgentActionsController";
37
- import { RealTimeReportsWGDetailsCESController } from "./controller/twilio/RealTimeReportsWGDetailsControllerCES";
38
38
  import * as models from "./models";
39
- export { DatabaseFactory, GPMController, TwilioAuthTokenConfig, SyncServiceFactory, CxConfigAssetController, CxConfigController, CallLogsController, CxConfigOtherController, CxConfigExternalNumbersController, CxConfigQueueMenuController, TwilioClient, AuditLogController, QuickLinksController, NavigationController, QualityFormsController, RealTimeReportsWGDetailsController, RealTimeReportsQueueDetailsController, PlaybackScreenrecordingsController, CxConfigUIConfigController, HoopProfilesListController, HoopOverrideBranchesController, HoopOperationsController, HoopHolidaysController, HoopPartialDaysController, HoopBusinessHoursController, CallbackAndVoicemailController, HoopMainController, HoopNotesController, HoopBusinessHoursControllerAConnect, AWSConnectAPIConfig, AWSClient, HoopServiceFactory, ChannelSettingsController, TaskInfoPanelController, AgentScorecardController, AgentActionsController, RealTimeReportsWGDetailsCESController };
39
+ export { DatabaseFactory, GPMController, TwilioAuthTokenConfig, SyncServiceFactory, CxConfigAssetController, CxConfigController, CallLogsController, CxConfigOtherController, CxConfigExternalNumbersController, CxConfigQueueMenuController, TwilioClient, AuditLogController, QuickLinksController, NavigationController, QualityFormsController, RealTimeReportsWGDetailsController, RealTimeReportsQueueDetailsController, RTReportsQueueDetailsCESController, PlaybackScreenrecordingsController, CxConfigUIConfigController, HoopProfilesListController, HoopOverrideBranchesController, HoopOperationsController, HoopHolidaysController, HoopPartialDaysController, HoopBusinessHoursController, CallbackAndVoicemailController, HoopMainController, HoopNotesController, HoopBusinessHoursControllerAConnect, AWSConnectAPIConfig, AWSClient, HoopServiceFactory, ChannelSettingsController, TaskInfoPanelController, AgentScorecardController, AgentActionsController, };
40
40
  export { models };
package/lib/index.js CHANGED
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.models = exports.RealTimeReportsWGDetailsCESController = exports.AgentActionsController = exports.AgentScorecardController = exports.TaskInfoPanelController = exports.ChannelSettingsController = exports.HoopServiceFactory = exports.AWSClient = exports.AWSConnectAPIConfig = exports.HoopBusinessHoursControllerAConnect = exports.HoopNotesController = exports.HoopMainController = exports.CallbackAndVoicemailController = exports.HoopBusinessHoursController = exports.HoopPartialDaysController = exports.HoopHolidaysController = exports.HoopOperationsController = exports.HoopOverrideBranchesController = exports.HoopProfilesListController = exports.CxConfigUIConfigController = exports.PlaybackScreenrecordingsController = exports.RealTimeReportsQueueDetailsController = exports.RealTimeReportsWGDetailsController = exports.QualityFormsController = exports.NavigationController = exports.QuickLinksController = exports.AuditLogController = exports.TwilioClient = exports.CxConfigQueueMenuController = exports.CxConfigExternalNumbersController = exports.CxConfigOtherController = exports.CallLogsController = exports.CxConfigController = exports.CxConfigAssetController = exports.SyncServiceFactory = exports.TwilioAuthTokenConfig = exports.GPMController = exports.DatabaseFactory = void 0;
26
+ exports.models = exports.AgentActionsController = exports.AgentScorecardController = exports.TaskInfoPanelController = exports.ChannelSettingsController = exports.HoopServiceFactory = exports.AWSClient = exports.AWSConnectAPIConfig = exports.HoopBusinessHoursControllerAConnect = exports.HoopNotesController = exports.HoopMainController = exports.CallbackAndVoicemailController = exports.HoopBusinessHoursController = exports.HoopPartialDaysController = exports.HoopHolidaysController = exports.HoopOperationsController = exports.HoopOverrideBranchesController = exports.HoopProfilesListController = exports.CxConfigUIConfigController = exports.PlaybackScreenrecordingsController = exports.RTReportsQueueDetailsCESController = exports.RealTimeReportsQueueDetailsController = exports.RealTimeReportsWGDetailsController = exports.QualityFormsController = exports.NavigationController = exports.QuickLinksController = exports.AuditLogController = exports.TwilioClient = exports.CxConfigQueueMenuController = exports.CxConfigExternalNumbersController = exports.CxConfigOtherController = exports.CallLogsController = exports.CxConfigController = exports.CxConfigAssetController = exports.SyncServiceFactory = exports.TwilioAuthTokenConfig = exports.GPMController = exports.DatabaseFactory = void 0;
27
27
  const DatabaseFactory_1 = require("./common/abstract/DatabaseFactory");
28
28
  Object.defineProperty(exports, "DatabaseFactory", { enumerable: true, get: function () { return DatabaseFactory_1.DatabaseFactory; } });
29
29
  const GPMController_1 = require("./controller/twilio/GPMController");
@@ -60,6 +60,8 @@ const RealTimeReportsWGDetailsController_1 = require("./controller/twilio/RealTi
60
60
  Object.defineProperty(exports, "RealTimeReportsWGDetailsController", { enumerable: true, get: function () { return RealTimeReportsWGDetailsController_1.RealTimeReportsWGDetailsController; } });
61
61
  const RealTimeReportQueueDetailsController_1 = require("./controller/twilio/RealTimeReportQueueDetailsController");
62
62
  Object.defineProperty(exports, "RealTimeReportsQueueDetailsController", { enumerable: true, get: function () { return RealTimeReportQueueDetailsController_1.RealTimeReportsQueueDetailsController; } });
63
+ const RTRWGQueueStatisticsCESController_1 = require("./controller/twilio/RTRWGQueueStatisticsCESController");
64
+ Object.defineProperty(exports, "RTReportsQueueDetailsCESController", { enumerable: true, get: function () { return RTRWGQueueStatisticsCESController_1.RTReportsQueueDetailsCESController; } });
63
65
  const PlaybackScreenrecordings_1 = require("./controller/aws/PlaybackScreenrecordings");
64
66
  Object.defineProperty(exports, "PlaybackScreenrecordingsController", { enumerable: true, get: function () { return PlaybackScreenrecordings_1.PlaybackScreenrecordingsController; } });
65
67
  const HoopProfilesListController_1 = require("./controller/twilio/HoopProfilesListController");
@@ -96,7 +98,5 @@ const AgentScorecardController_1 = require("./controller/twilio/AgentScorecardCo
96
98
  Object.defineProperty(exports, "AgentScorecardController", { enumerable: true, get: function () { return AgentScorecardController_1.AgentScorecardController; } });
97
99
  const AgentActionsController_1 = require("./controller/twilio/AgentActionsController");
98
100
  Object.defineProperty(exports, "AgentActionsController", { enumerable: true, get: function () { return AgentActionsController_1.AgentActionsController; } });
99
- const RealTimeReportsWGDetailsControllerCES_1 = require("./controller/twilio/RealTimeReportsWGDetailsControllerCES");
100
- Object.defineProperty(exports, "RealTimeReportsWGDetailsCESController", { enumerable: true, get: function () { return RealTimeReportsWGDetailsControllerCES_1.RealTimeReportsWGDetailsCESController; } });
101
101
  const models = __importStar(require("./models"));
102
102
  exports.models = models;
@@ -0,0 +1,34 @@
1
+ import { BaseModel } from "../abstract/BaseModel";
2
+ import { validationMessage } from "../interface/IBaseModel";
3
+ /**
4
+ * QueuePeriodStatisticsModel
5
+ * -------------------------
6
+ * Model for storing period statistics for a queue (Sync Map Item).
7
+ * Used for items inside a queue-statistics Sync Map, keyed by period (e.g., p_1).
8
+ * Data format matches: {"_aban":0,"_answer":0,"_offer":0,"_sla_target":30,"_sum_wait_time":0,"_total_service_level":0,"_transfer_count":0}
9
+ */
10
+ export declare class QueuePeriodStatisticsModel extends BaseModel {
11
+ private _aban;
12
+ private _answer;
13
+ private _offer;
14
+ private _sla_target;
15
+ private _sum_wait_time;
16
+ private _total_service_level;
17
+ private _transfer_count;
18
+ constructor(aban?: number, answer?: number, offer?: number, sla_target?: number, sum_wait_time?: number, total_service_level?: number, transfer_count?: number);
19
+ validateData(): validationMessage[];
20
+ get aban(): number;
21
+ set aban(value: number);
22
+ get answer(): number;
23
+ set answer(value: number);
24
+ get offer(): number;
25
+ set offer(value: number);
26
+ get sla_target(): number;
27
+ set sla_target(value: number);
28
+ get sum_wait_time(): number;
29
+ set sum_wait_time(value: number);
30
+ get total_service_level(): number;
31
+ set total_service_level(value: number);
32
+ get transfer_count(): number;
33
+ set transfer_count(value: number);
34
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueuePeriodStatisticsModel = void 0;
4
+ const BaseModel_1 = require("../abstract/BaseModel");
5
+ /**
6
+ * QueuePeriodStatisticsModel
7
+ * -------------------------
8
+ * Model for storing period statistics for a queue (Sync Map Item).
9
+ * Used for items inside a queue-statistics Sync Map, keyed by period (e.g., p_1).
10
+ * Data format matches: {"_aban":0,"_answer":0,"_offer":0,"_sla_target":30,"_sum_wait_time":0,"_total_service_level":0,"_transfer_count":0}
11
+ */
12
+ class QueuePeriodStatisticsModel extends BaseModel_1.BaseModel {
13
+ constructor(aban = 0, answer = 0, offer = 0, sla_target = 30, sum_wait_time = 0, total_service_level = 0, transfer_count = 0) {
14
+ super();
15
+ this._aban = aban;
16
+ this._answer = answer;
17
+ this._offer = offer;
18
+ this._sla_target = sla_target;
19
+ this._sum_wait_time = sum_wait_time;
20
+ this._total_service_level = total_service_level;
21
+ this._transfer_count = transfer_count;
22
+ }
23
+ validateData() {
24
+ this.validationMessages = [];
25
+ // Validate all fields are integers
26
+ if (!Number.isInteger(this._aban)) {
27
+ this.validationMessages.push({
28
+ type: "Error",
29
+ fieldDescription: "aban",
30
+ message: "Aban must be an integer",
31
+ });
32
+ }
33
+ if (!Number.isInteger(this._answer)) {
34
+ this.validationMessages.push({
35
+ type: "Error",
36
+ fieldDescription: "answer",
37
+ message: "Answer must be an integer",
38
+ });
39
+ }
40
+ if (!Number.isInteger(this._offer)) {
41
+ this.validationMessages.push({
42
+ type: "Error",
43
+ fieldDescription: "offer",
44
+ message: "Offer must be an integer",
45
+ });
46
+ }
47
+ if (!Number.isInteger(this._sla_target)) {
48
+ this.validationMessages.push({
49
+ type: "Error",
50
+ fieldDescription: "sla_target",
51
+ message: "SLA Target must be an integer",
52
+ });
53
+ }
54
+ if (!Number.isInteger(this._sum_wait_time)) {
55
+ this.validationMessages.push({
56
+ type: "Error",
57
+ fieldDescription: "sum_wait_time",
58
+ message: "Sum Wait Time must be an integer",
59
+ });
60
+ }
61
+ if (!Number.isInteger(this._total_service_level)) {
62
+ this.validationMessages.push({
63
+ type: "Error",
64
+ fieldDescription: "total_service_level",
65
+ message: "Total Service Level must be an integer",
66
+ });
67
+ }
68
+ if (!Number.isInteger(this._transfer_count)) {
69
+ this.validationMessages.push({
70
+ type: "Error",
71
+ fieldDescription: "transfer_count",
72
+ message: "Transfer Count must be an integer",
73
+ });
74
+ }
75
+ return this.validationMessages;
76
+ }
77
+ // Getters and setters (plain, matching other models)
78
+ get aban() { return this._aban; }
79
+ set aban(value) { this._aban = value; }
80
+ get answer() { return this._answer; }
81
+ set answer(value) { this._answer = value; }
82
+ get offer() { return this._offer; }
83
+ set offer(value) { this._offer = value; }
84
+ get sla_target() { return this._sla_target; }
85
+ set sla_target(value) { this._sla_target = value; }
86
+ get sum_wait_time() { return this._sum_wait_time; }
87
+ set sum_wait_time(value) { this._sum_wait_time = value; }
88
+ get total_service_level() { return this._total_service_level; }
89
+ set total_service_level(value) { this._total_service_level = value; }
90
+ get transfer_count() { return this._transfer_count; }
91
+ set transfer_count(value) { this._transfer_count = value; }
92
+ }
93
+ exports.QueuePeriodStatisticsModel = QueuePeriodStatisticsModel;
@@ -11,10 +11,14 @@ export declare class WorkGroupDetailsModel extends BaseModel {
11
11
  private _slaTarget;
12
12
  private _totalServiceLevel;
13
13
  private _transferCount;
14
+ private _interactionsWaiting;
15
+ private _longestInteractionWaiting;
16
+ private _totalAbanLevel;
17
+ private _averageSpeedAnswer;
14
18
  private _createdAt;
15
19
  private _updatedAt;
16
20
  private _eventId;
17
- constructor(id: string, uniqueName: string, periodNumber: string, sumWaitTime: number, intOffr: number, intAns: number, intAbn: number, slaTarget: number, totalServiceLevel: number, transferCount: number, createdAt: Date | undefined | string, updatedAt: Date | undefined | string, eventId: string);
21
+ constructor(id: string, uniqueName: string, periodNumber: string, sumWaitTime: number, intOffr: number, intAns: number, intAbn: number, slaTarget: number, totalServiceLevel: number, transferCount: number, interactionsWaiting: number, longestInteractionWaiting: number, totalAbanLevel: number, averageSpeedAnswer: number, createdAt: Date | undefined | string, updatedAt: Date | undefined | string, eventId: string);
18
22
  get id(): string;
19
23
  set id(value: string);
20
24
  get uniqueName(): string;
@@ -35,6 +39,14 @@ export declare class WorkGroupDetailsModel extends BaseModel {
35
39
  set totalServiceLevel(value: number);
36
40
  get transferCount(): number;
37
41
  set transferCount(value: number);
42
+ get interactionsWaiting(): number;
43
+ set interactionsWaiting(value: number);
44
+ get longestInteractionWaiting(): number;
45
+ set longestInteractionWaiting(value: number);
46
+ get totalAbanLevel(): number;
47
+ set totalAbanLevel(value: number);
48
+ get averageSpeedAnswer(): number;
49
+ set averageSpeedAnswer(value: number);
38
50
  get createdAt(): Date | undefined | string;
39
51
  set createdAt(value: Date | undefined | string);
40
52
  get updatedAt(): Date | undefined | string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkGroupDetailsModel = void 0;
4
4
  const BaseModel_1 = require("../abstract/BaseModel");
5
5
  class WorkGroupDetailsModel extends BaseModel_1.BaseModel {
6
- constructor(id, uniqueName, periodNumber, sumWaitTime, intOffr, intAns, intAbn, slaTarget, totalServiceLevel, transferCount, createdAt, updatedAt, eventId) {
6
+ constructor(id, uniqueName, periodNumber, sumWaitTime, intOffr, intAns, intAbn, slaTarget, totalServiceLevel, transferCount, interactionsWaiting, longestInteractionWaiting, totalAbanLevel, averageSpeedAnswer, createdAt, updatedAt, eventId) {
7
7
  super();
8
8
  this._id = id;
9
9
  this._uniqueName = uniqueName;
@@ -15,6 +15,10 @@ class WorkGroupDetailsModel extends BaseModel_1.BaseModel {
15
15
  this._slaTarget = slaTarget;
16
16
  this._totalServiceLevel = totalServiceLevel;
17
17
  this._transferCount = transferCount;
18
+ this._interactionsWaiting = interactionsWaiting;
19
+ this._longestInteractionWaiting = longestInteractionWaiting;
20
+ this._totalAbanLevel = totalAbanLevel;
21
+ this._averageSpeedAnswer = averageSpeedAnswer;
18
22
  this._createdAt = createdAt;
19
23
  this._updatedAt = updatedAt;
20
24
  this._eventId = eventId;
@@ -80,6 +84,30 @@ class WorkGroupDetailsModel extends BaseModel_1.BaseModel {
80
84
  set transferCount(value) {
81
85
  this._transferCount = value;
82
86
  }
87
+ get interactionsWaiting() {
88
+ return this._interactionsWaiting;
89
+ }
90
+ set interactionsWaiting(value) {
91
+ this._interactionsWaiting = value;
92
+ }
93
+ get longestInteractionWaiting() {
94
+ return this.longestInteractionWaiting;
95
+ }
96
+ set longestInteractionWaiting(value) {
97
+ this._longestInteractionWaiting = value;
98
+ }
99
+ get totalAbanLevel() {
100
+ return this.totalAbanLevel;
101
+ }
102
+ set totalAbanLevel(value) {
103
+ this._totalAbanLevel = value;
104
+ }
105
+ get averageSpeedAnswer() {
106
+ return this.averageSpeedAnswer;
107
+ }
108
+ set averageSpeedAnswer(value) {
109
+ this._averageSpeedAnswer = value;
110
+ }
83
111
  get createdAt() {
84
112
  return this._createdAt;
85
113
  }
@@ -164,6 +192,41 @@ class WorkGroupDetailsModel extends BaseModel_1.BaseModel {
164
192
  message: "totalServiceLevel must be a non-negative number",
165
193
  });
166
194
  }
195
+ if (typeof this._transferCount !== "number" || this._transferCount < 0) {
196
+ this.validationMessages.push({
197
+ type: "Error",
198
+ fieldDescription: "transferCount",
199
+ message: "transferCount must be a non-negative number",
200
+ });
201
+ }
202
+ if (typeof this._interactionsWaiting !== "number" || this._interactionsWaiting < 0) {
203
+ this.validationMessages.push({
204
+ type: "Error",
205
+ fieldDescription: "interactionsWaiting",
206
+ message: "interactionsWaiting must be a non-negative number",
207
+ });
208
+ }
209
+ if (typeof this._longestInteractionWaiting !== "number" || this._longestInteractionWaiting < 0) {
210
+ this.validationMessages.push({
211
+ type: "Error",
212
+ fieldDescription: "longestInteractionWaiting",
213
+ message: "longestInteractionWaiting must be a non-negative number",
214
+ });
215
+ }
216
+ if (typeof this._totalAbanLevel !== "number" || this._totalAbanLevel < 0) {
217
+ this.validationMessages.push({
218
+ type: "Error",
219
+ fieldDescription: "totalAbanLevel",
220
+ message: "totalAbanLevel must be a non-negative number",
221
+ });
222
+ }
223
+ if (typeof this._averageSpeedAnswer !== "number" || this._averageSpeedAnswer < 0) {
224
+ this.validationMessages.push({
225
+ type: "Error",
226
+ fieldDescription: "averageSpeedAnswer",
227
+ message: "averageSpeedAnswer must be a non-negative number",
228
+ });
229
+ }
167
230
  return this.validationMessages;
168
231
  }
169
232
  }
@@ -0,0 +1,16 @@
1
+ import { BaseModel } from "../abstract/BaseModel";
2
+ import { validationMessage } from "../interface/IBaseModel";
3
+ /**
4
+ * WorkGroupQueueStatisticsModel
5
+ * ----------------------------
6
+ * Model for validating Sync Map names for queue statistics.
7
+ * Ensures the name matches the format: <QUEUE>_queue-statistics_<DATE>
8
+ */
9
+ export declare class WorkGroupQueueStatisticsModel extends BaseModel {
10
+ validateData(): validationMessage[];
11
+ /**
12
+ * Validates a table name against the required sync map pattern.
13
+ * Pattern: <QUEUE>_queue-statistics_<DATE> (e.g., RONA_queue-statistics_19072025)
14
+ */
15
+ static validateTableName(tableName: string): validationMessage[];
16
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkGroupQueueStatisticsModel = void 0;
4
+ const BaseModel_1 = require("../abstract/BaseModel");
5
+ /**
6
+ * WorkGroupQueueStatisticsModel
7
+ * ----------------------------
8
+ * Model for validating Sync Map names for queue statistics.
9
+ * Ensures the name matches the format: <QUEUE>_queue-statistics_<DATE>
10
+ */
11
+ class WorkGroupQueueStatisticsModel extends BaseModel_1.BaseModel {
12
+ validateData() {
13
+ throw new Error("Method not implemented.");
14
+ }
15
+ /**
16
+ * Validates a table name against the required sync map pattern.
17
+ * Pattern: <QUEUE>_queue-statistics_<DATE> (e.g., RONA_queue-statistics_19072025)
18
+ */
19
+ static validateTableName(tableName) {
20
+ const regex = /^[A-Z0-9_]+_queue-statistics_\d{8}$/i;
21
+ const messages = [];
22
+ if (!regex.test(tableName)) {
23
+ messages.push({
24
+ type: "Error",
25
+ fieldDescription: "tableName",
26
+ message: "Table name must match the format <QUEUE>_queue-statistics_<DATE> (e.g., TEST_queue-statistics_19072025)",
27
+ });
28
+ }
29
+ return messages;
30
+ }
31
+ }
32
+ exports.WorkGroupQueueStatisticsModel = WorkGroupQueueStatisticsModel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hgs-twilio-class-lib",
3
- "version": "1.1.66",
3
+ "version": "1.1.67",
4
4
  "description": "Flex 2.0 backend to connect with any database ",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./types/index.d.ts",