@webitel/api-services 0.1.69 → 0.1.70

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.
Files changed (89) hide show
  1. package/package.json +3 -1
  2. package/src/api/clients/_shared/types.ts +25 -0
  3. package/src/api/clients/index.ts +8 -0
  4. package/src/api/clients/queues/__tests__/fieldsToSend.spec.ts +135 -0
  5. package/src/api/clients/queues/__tests__/queueLogs.spec.ts +132 -0
  6. package/src/api/clients/queues/__tests__/queueMembers.spec.ts +175 -0
  7. package/src/api/clients/queues/__tests__/queues.spec.ts +130 -0
  8. package/src/api/clients/queues/defaults/__tests__/queueTypeDefaults.spec.ts +143 -0
  9. package/src/api/clients/queues/defaults/amd.ts +17 -0
  10. package/src/api/clients/queues/defaults/defaultQueue.ts +9 -0
  11. package/src/api/clients/queues/defaults/processing.ts +8 -4
  12. package/src/api/clients/queues/defaults/queueTypeDefaults.ts +305 -0
  13. package/src/api/clients/queues/queueAgents.ts +48 -0
  14. package/src/api/clients/queues/queueBuckets.ts +187 -0
  15. package/src/api/clients/queues/queueHooks.ts +184 -0
  16. package/src/api/clients/queues/queueLogs.ts +80 -0
  17. package/src/api/clients/queues/queueMembers.ts +426 -0
  18. package/src/api/clients/queues/queueResGroups.ts +176 -0
  19. package/src/api/clients/queues/queueSkills.ts +183 -0
  20. package/src/api/clients/queues/queueState.ts +97 -0
  21. package/src/api/clients/queues/queues.ts +124 -94
  22. package/src/api/clients/queues/scripts/__tests__/mapResetMembersFilters.spec.ts +132 -0
  23. package/src/api/clients/queues/scripts/mapResetMembersFilters.ts +52 -0
  24. package/src/enums/CallReportingStatus/CallReportingStatus.ts +13 -0
  25. package/src/enums/MemberStopCause/MemberStopCause.ts +13 -0
  26. package/src/enums/QueueStrategy/QueueStrategy.ts +27 -0
  27. package/src/enums/QueueType/QueueType.ts +31 -0
  28. package/src/enums/TimeBaseScore/TimeBaseScore.ts +6 -0
  29. package/src/enums/TypesResourceStrategy/TypesResourceStrategy.ts +7 -0
  30. package/src/enums/index.ts +21 -1
  31. package/src/scripts/index.ts +19 -1
  32. package/src/scripts/normalizeDatetime/normalizeDatetime.ts +132 -0
  33. package/src/validations/_shared/isFilled.ts +15 -0
  34. package/src/validations/_shared/lookup.validations.ts +28 -0
  35. package/src/validations/_shared/variablePair.validations.ts +18 -0
  36. package/src/validations/index.ts +12 -0
  37. package/src/validations/queue/__tests__/queue.validations.spec.ts +159 -0
  38. package/src/validations/queue/queue.rules.ts +166 -0
  39. package/src/validations/queue/queue.validations.ts +105 -0
  40. package/src/validations/queue/queueAmd.validations.ts +22 -0
  41. package/src/validations/queue/queuePayload.validations.ts +71 -0
  42. package/src/validations/queue/taskProcessing.validations.ts +21 -0
  43. package/src/validations/queueBucket/queueBucket.validations.ts +10 -0
  44. package/src/validations/queueHook/queueHook.validations.ts +10 -0
  45. package/src/validations/queueMember/memberCommunication.validations.ts +25 -0
  46. package/src/validations/queueMember/queueMember.validations.ts +38 -0
  47. package/src/validations/queueResGroup/queueResGroup.validations.ts +15 -0
  48. package/src/validations/queueSkill/queueSkill.validations.ts +42 -0
  49. package/types/.tsbuildinfo +1 -1
  50. package/types/api/clients/_shared/types.d.ts +20 -0
  51. package/types/api/clients/index.d.ts +8 -0
  52. package/types/api/clients/queues/defaults/amd.d.ts +17 -0
  53. package/types/api/clients/queues/defaults/defaultQueue.d.ts +9 -0
  54. package/types/api/clients/queues/defaults/processing.d.ts +7 -2
  55. package/types/api/clients/queues/defaults/queueTypeDefaults.d.ts +31 -0
  56. package/types/api/clients/queues/queueAgents.d.ts +7 -0
  57. package/types/api/clients/queues/queueBuckets.d.ts +12 -0
  58. package/types/api/clients/queues/queueHooks.d.ts +12 -0
  59. package/types/api/clients/queues/queueLogs.d.ts +7 -0
  60. package/types/api/clients/queues/queueMembers.d.ts +30 -0
  61. package/types/api/clients/queues/queueResGroups.d.ts +15 -0
  62. package/types/api/clients/queues/queueSkills.d.ts +12 -0
  63. package/types/api/clients/queues/queueState.d.ts +8 -0
  64. package/types/api/clients/queues/queues.d.ts +9 -1
  65. package/types/api/clients/queues/scripts/mapResetMembersFilters.d.ts +30 -0
  66. package/types/enums/CallReportingStatus/CallReportingStatus.d.ts +11 -0
  67. package/types/enums/MemberStopCause/MemberStopCause.d.ts +11 -0
  68. package/types/enums/QueueStrategy/QueueStrategy.d.ts +21 -0
  69. package/types/enums/QueueType/QueueType.d.ts +28 -0
  70. package/types/enums/TimeBaseScore/TimeBaseScore.d.ts +5 -0
  71. package/types/enums/TypesResourceStrategy/TypesResourceStrategy.d.ts +5 -0
  72. package/types/enums/index.d.ts +7 -1
  73. package/types/scripts/index.d.ts +3 -1
  74. package/types/scripts/normalizeDatetime/normalizeDatetime.d.ts +14 -0
  75. package/types/validations/_shared/isFilled.d.ts +9 -0
  76. package/types/validations/_shared/lookup.validations.d.ts +18 -0
  77. package/types/validations/_shared/variablePair.validations.d.ts +16 -0
  78. package/types/validations/index.d.ts +12 -0
  79. package/types/validations/queue/queue.rules.d.ts +21 -0
  80. package/types/validations/queue/queue.validations.d.ts +285 -0
  81. package/types/validations/queue/queueAmd.validations.d.ts +22 -0
  82. package/types/validations/queue/queuePayload.validations.d.ts +75 -0
  83. package/types/validations/queue/taskProcessing.validations.d.ts +22 -0
  84. package/types/validations/queueBucket/queueBucket.validations.d.ts +9 -0
  85. package/types/validations/queueHook/queueHook.validations.d.ts +10 -0
  86. package/types/validations/queueMember/memberCommunication.validations.d.ts +16 -0
  87. package/types/validations/queueMember/queueMember.validations.d.ts +48 -0
  88. package/types/validations/queueResGroup/queueResGroup.validations.d.ts +11 -0
  89. package/types/validations/queueSkill/queueSkill.validations.d.ts +34 -0
@@ -0,0 +1,187 @@
1
+ import { getQueueBucketService } from '@webitel/api-services/gen';
2
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
3
+ import { queueBucketSchema } from '@webitel/api-services/validations';
4
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
5
+ import {
6
+ applyTransform,
7
+ camelToSnake,
8
+ merge,
9
+ notify,
10
+ sanitize,
11
+ snakeToCamel,
12
+ starToSearch,
13
+ } from '../../transformers';
14
+ import type {
15
+ ApiId,
16
+ ApiParams,
17
+ NestedAddItemParams,
18
+ NestedDeleteItemParams,
19
+ NestedGetItemParams,
20
+ NestedPatchItemParams,
21
+ NestedUpdateItemParams,
22
+ } from '../_shared/types';
23
+
24
+ const fieldsToSend = [
25
+ ...getShallowFieldsToSendFromZodSchema(queueBucketSchema),
26
+ // injected by preRequestHandler; not part of the form, so not in the schema
27
+ 'queueId',
28
+ ];
29
+
30
+ const preRequestHandler = (parentId: ApiId) => (item: ApiParams) => ({
31
+ ...item,
32
+ queueId: parentId,
33
+ });
34
+
35
+ const getQueueBucketsList = async (params: ApiParams) => {
36
+ const { page, size, search, sort, fields, id, parentId } = applyTransform(
37
+ params,
38
+ [
39
+ merge(getDefaultGetParams()),
40
+ starToSearch('search'),
41
+ ],
42
+ );
43
+
44
+ try {
45
+ const response = await getQueueBucketService().searchQueueBucket(
46
+ String(parentId),
47
+ {
48
+ page,
49
+ size,
50
+ // the generated param is `q`; `search` is what the datalist store sends
51
+ q: search,
52
+ sort,
53
+ fields,
54
+ id,
55
+ },
56
+ );
57
+ const { items, next } = applyTransform(response.data, [
58
+ snakeToCamel(),
59
+ merge(getDefaultGetListResponse()),
60
+ ]);
61
+ return {
62
+ items,
63
+ next,
64
+ };
65
+ } catch (err) {
66
+ throw applyTransform(err, [
67
+ notify,
68
+ ]);
69
+ }
70
+ };
71
+
72
+ const getQueueBucket = async ({
73
+ parentId,
74
+ itemId: id,
75
+ }: NestedGetItemParams) => {
76
+ try {
77
+ const response = await getQueueBucketService().readQueueBucket(
78
+ String(parentId),
79
+ String(id),
80
+ );
81
+ return applyTransform(response.data, [
82
+ snakeToCamel(),
83
+ ]);
84
+ } catch (err) {
85
+ throw applyTransform(err, [
86
+ notify,
87
+ ]);
88
+ }
89
+ };
90
+
91
+ const addQueueBucket = async ({
92
+ parentId,
93
+ itemInstance,
94
+ }: NestedAddItemParams) => {
95
+ const item = applyTransform(itemInstance, [
96
+ preRequestHandler(parentId),
97
+ sanitize(fieldsToSend),
98
+ camelToSnake(),
99
+ ]);
100
+ try {
101
+ const response = await getQueueBucketService().createQueueBucket(
102
+ String(parentId),
103
+ item,
104
+ );
105
+ return applyTransform(response.data, [
106
+ snakeToCamel(),
107
+ ]);
108
+ } catch (err) {
109
+ throw applyTransform(err, [
110
+ notify,
111
+ ]);
112
+ }
113
+ };
114
+
115
+ const updateQueueBucket = async ({
116
+ itemInstance,
117
+ itemId: id,
118
+ parentId,
119
+ }: NestedUpdateItemParams) => {
120
+ const item = applyTransform(itemInstance, [
121
+ preRequestHandler(parentId),
122
+ sanitize(fieldsToSend),
123
+ camelToSnake(),
124
+ ]);
125
+ try {
126
+ const response = await getQueueBucketService().updateQueueBucket(
127
+ String(parentId),
128
+ String(id),
129
+ item,
130
+ );
131
+ return applyTransform(response.data, [
132
+ snakeToCamel(),
133
+ ]);
134
+ } catch (err) {
135
+ throw applyTransform(err, [
136
+ notify,
137
+ ]);
138
+ }
139
+ };
140
+
141
+ const patchQueueBucket = async ({
142
+ changes,
143
+ id,
144
+ parentId,
145
+ }: NestedPatchItemParams) => {
146
+ const body = applyTransform(changes, [
147
+ sanitize(fieldsToSend),
148
+ camelToSnake(),
149
+ ]);
150
+ try {
151
+ const response = await getQueueBucketService().patchQueueBucket(
152
+ String(parentId),
153
+ String(id),
154
+ body,
155
+ );
156
+ return applyTransform(response.data, [
157
+ snakeToCamel(),
158
+ ]);
159
+ } catch (err) {
160
+ throw applyTransform(err, [
161
+ notify,
162
+ ]);
163
+ }
164
+ };
165
+
166
+ const deleteQueueBucket = async ({ parentId, id }: NestedDeleteItemParams) => {
167
+ try {
168
+ const response = await getQueueBucketService().deleteQueueBucket(
169
+ String(parentId),
170
+ String(id),
171
+ );
172
+ return applyTransform(response.data, []);
173
+ } catch (err) {
174
+ throw applyTransform(err, [
175
+ notify,
176
+ ]);
177
+ }
178
+ };
179
+
180
+ export const QueueBucketsAPI = {
181
+ getList: getQueueBucketsList,
182
+ get: getQueueBucket,
183
+ add: addQueueBucket,
184
+ update: updateQueueBucket,
185
+ delete: deleteQueueBucket,
186
+ patch: patchQueueBucket,
187
+ };
@@ -0,0 +1,184 @@
1
+ import { getQueueHookService } from '@webitel/api-services/gen';
2
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
3
+ import { queueHookSchema } from '@webitel/api-services/validations';
4
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
5
+ import {
6
+ applyTransform,
7
+ camelToSnake,
8
+ merge,
9
+ notify,
10
+ sanitize,
11
+ snakeToCamel,
12
+ starToSearch,
13
+ } from '../../transformers';
14
+ import type {
15
+ ApiId,
16
+ ApiParams,
17
+ NestedAddItemParams,
18
+ NestedDeleteItemParams,
19
+ NestedGetItemParams,
20
+ NestedPatchItemParams,
21
+ NestedUpdateItemParams,
22
+ } from '../_shared/types';
23
+
24
+ const fieldsToSend = [
25
+ ...getShallowFieldsToSendFromZodSchema(queueHookSchema),
26
+ // injected by preRequestHandler; not part of the form, so not in the schema
27
+ 'queueId',
28
+ ];
29
+
30
+ const preRequestHandler = (parentId: ApiId) => (item: ApiParams) => ({
31
+ ...item,
32
+ queueId: parentId,
33
+ });
34
+
35
+ const getQueueHooksList = async (params: ApiParams) => {
36
+ const { page, size, search, sort, fields, id, parentId } = applyTransform(
37
+ params,
38
+ [
39
+ merge(getDefaultGetParams()),
40
+ starToSearch('search'),
41
+ ],
42
+ );
43
+
44
+ try {
45
+ const response = await getQueueHookService().searchQueueHook(
46
+ Number(parentId),
47
+ {
48
+ page,
49
+ size,
50
+ // the generated param is `q`; `search` is what the datalist store sends
51
+ q: search,
52
+ sort,
53
+ fields,
54
+ id,
55
+ },
56
+ );
57
+ const { items, next } = applyTransform(response.data, [
58
+ snakeToCamel(),
59
+ merge(getDefaultGetListResponse()),
60
+ ]);
61
+ return {
62
+ items,
63
+ next,
64
+ };
65
+ } catch (err) {
66
+ throw applyTransform(err, [
67
+ notify,
68
+ ]);
69
+ }
70
+ };
71
+
72
+ const getQueueHook = async ({ parentId, itemId: id }: NestedGetItemParams) => {
73
+ try {
74
+ const response = await getQueueHookService().readQueueHook(
75
+ Number(parentId),
76
+ Number(id),
77
+ );
78
+ return applyTransform(response.data, [
79
+ snakeToCamel(),
80
+ ]);
81
+ } catch (err) {
82
+ throw applyTransform(err, [
83
+ notify,
84
+ ]);
85
+ }
86
+ };
87
+
88
+ const addQueueHook = async ({
89
+ parentId,
90
+ itemInstance,
91
+ }: NestedAddItemParams) => {
92
+ const item = applyTransform(itemInstance, [
93
+ preRequestHandler(parentId),
94
+ sanitize(fieldsToSend),
95
+ camelToSnake(),
96
+ ]);
97
+ try {
98
+ const response = await getQueueHookService().createQueueHook(
99
+ Number(parentId),
100
+ item,
101
+ );
102
+ return applyTransform(response.data, [
103
+ snakeToCamel(),
104
+ ]);
105
+ } catch (err) {
106
+ throw applyTransform(err, [
107
+ notify,
108
+ ]);
109
+ }
110
+ };
111
+
112
+ const updateQueueHook = async ({
113
+ itemInstance,
114
+ itemId: id,
115
+ parentId,
116
+ }: NestedUpdateItemParams) => {
117
+ const item = applyTransform(itemInstance, [
118
+ preRequestHandler(parentId),
119
+ sanitize(fieldsToSend),
120
+ camelToSnake(),
121
+ ]);
122
+ try {
123
+ const response = await getQueueHookService().updateQueueHook(
124
+ Number(parentId),
125
+ Number(id),
126
+ item,
127
+ );
128
+ return applyTransform(response.data, [
129
+ snakeToCamel(),
130
+ ]);
131
+ } catch (err) {
132
+ throw applyTransform(err, [
133
+ notify,
134
+ ]);
135
+ }
136
+ };
137
+
138
+ const patchQueueHook = async ({
139
+ changes,
140
+ id,
141
+ parentId,
142
+ }: NestedPatchItemParams) => {
143
+ const body = applyTransform(changes, [
144
+ sanitize(fieldsToSend),
145
+ camelToSnake(),
146
+ ]);
147
+ try {
148
+ const response = await getQueueHookService().patchQueueHook(
149
+ Number(parentId),
150
+ Number(id),
151
+ body,
152
+ );
153
+ return applyTransform(response.data, [
154
+ snakeToCamel(),
155
+ ]);
156
+ } catch (err) {
157
+ throw applyTransform(err, [
158
+ notify,
159
+ ]);
160
+ }
161
+ };
162
+
163
+ const deleteQueueHook = async ({ parentId, id }: NestedDeleteItemParams) => {
164
+ try {
165
+ const response = await getQueueHookService().deleteQueueHook(
166
+ Number(parentId),
167
+ Number(id),
168
+ );
169
+ return applyTransform(response.data, []);
170
+ } catch (err) {
171
+ throw applyTransform(err, [
172
+ notify,
173
+ ]);
174
+ }
175
+ };
176
+
177
+ export const QueueHooksAPI = {
178
+ getList: getQueueHooksList,
179
+ get: getQueueHook,
180
+ add: addQueueHook,
181
+ patch: patchQueueHook,
182
+ update: updateQueueHook,
183
+ delete: deleteQueueHook,
184
+ };
@@ -0,0 +1,80 @@
1
+ import { getMemberService } from '@webitel/api-services/gen';
2
+ import { normalizeDatetimeRange } from '../../../scripts';
3
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
4
+ import {
5
+ applyTransform,
6
+ merge,
7
+ notify,
8
+ snakeToCamel,
9
+ starToSearch,
10
+ } from '../../transformers';
11
+ import type { ApiParams } from '../_shared/types';
12
+
13
+ const getQueueLogs = async (params: ApiParams) => {
14
+ const {
15
+ parentId,
16
+ page,
17
+ size,
18
+ search,
19
+ sort = '+joined_at',
20
+ fields,
21
+ joinedAt,
22
+ leavingAt,
23
+ offeringAt,
24
+ duration,
25
+ result,
26
+ agent,
27
+ bucket,
28
+ } = applyTransform(params, [
29
+ merge(getDefaultGetParams()),
30
+ ({ joinedAt, leavingAt, offeringAt, ...rest }) => ({
31
+ ...rest,
32
+ joinedAt: normalizeDatetimeRange(joinedAt),
33
+ leavingAt: normalizeDatetimeRange(leavingAt),
34
+ offeringAt: normalizeDatetimeRange(offeringAt),
35
+ }),
36
+ starToSearch('search'),
37
+ ]);
38
+
39
+ try {
40
+ const response = await getMemberService().searchAttemptsHistory({
41
+ page,
42
+ size,
43
+ // the generated param is `q`; `search` is what the datalist store sends
44
+ q: search,
45
+ sort,
46
+ fields,
47
+ // repeated params, even for the single queue this tab shows
48
+ queueId: [
49
+ String(parentId),
50
+ ],
51
+ agentId: agent,
52
+ bucketId: bucket,
53
+ result,
54
+ 'joined_at.from': joinedAt?.from,
55
+ 'joined_at.to': joinedAt?.to,
56
+ 'leaving_at.from': leavingAt?.from,
57
+ 'leaving_at.to': leavingAt?.to,
58
+ 'offering_at.from': offeringAt?.from,
59
+ 'offering_at.to': offeringAt?.to,
60
+ 'duration.from': duration?.from,
61
+ 'duration.to': duration?.to,
62
+ });
63
+ const { items, next } = applyTransform(response.data, [
64
+ snakeToCamel(),
65
+ merge(getDefaultGetListResponse()),
66
+ ]);
67
+ return {
68
+ items,
69
+ next,
70
+ };
71
+ } catch (err) {
72
+ throw applyTransform(err, [
73
+ notify,
74
+ ]);
75
+ }
76
+ };
77
+
78
+ export const QueueLogsAPI = {
79
+ getList: getQueueLogs,
80
+ };