@webitel/api-services 0.0.23 → 0.0.25

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 (205) hide show
  1. package/package.json +14 -10
  2. package/src/api/axios/generateInstance.ts +30 -0
  3. package/src/api/axios/index.ts +2 -0
  4. package/src/api/clients/_shared/generatePermissionsApi.ts +97 -0
  5. package/src/api/clients/agents/agentChats.ts +74 -0
  6. package/src/api/clients/agents/agents.ts +265 -0
  7. package/src/api/clients/buckets/buckets.ts +112 -0
  8. package/src/api/clients/calendars/calendars.ts +214 -0
  9. package/src/api/clients/caseCloseReasonGroups/caseCloseReasonGroups.ts +128 -0
  10. package/src/api/clients/caseCloseReasons/caseCloseReasons.ts +128 -0
  11. package/src/api/clients/casePriorities/casePriorities.ts +139 -0
  12. package/src/api/clients/caseServiceCatalogs/serviceCatalogs.ts +198 -0
  13. package/src/api/clients/caseServices/services.ts +181 -0
  14. package/src/api/clients/caseSources/caseSources.ts +121 -0
  15. package/src/api/clients/caseStatusConditions/caseStatusConditions.ts +165 -0
  16. package/src/api/clients/caseStatuses/caseStatuses.ts +119 -0
  17. package/src/api/clients/catalog/catalog.ts +44 -0
  18. package/src/api/clients/chatGateways/chatGateways.ts +302 -0
  19. package/src/api/clients/chatGateways/defaults/defaultChatGateway.ts +18 -0
  20. package/src/api/clients/chatGateways/defaults/webChatGateway.ts +72 -0
  21. package/src/api/clients/chatGateways/enums/WebchatAlternativeChannel.enum.ts +14 -0
  22. package/src/api/clients/chatGateways/scripts/generateUri.ts +9 -0
  23. package/src/api/clients/communications/communications.ts +141 -0
  24. package/src/api/clients/configurations/configurations.ts +144 -0
  25. package/src/api/clients/contactGroups/contactGroups.ts +187 -0
  26. package/src/api/clients/flows/flow.ts +225 -0
  27. package/src/api/clients/gateways/defaults/defaultGateway.ts +9 -0
  28. package/src/api/clients/gateways/defaults/registerGateway.ts +12 -0
  29. package/src/api/clients/gateways/defaults/trunkingGateway.ts +16 -0
  30. package/src/api/clients/gateways/gateways.ts +175 -0
  31. package/src/api/clients/index.ts +68 -0
  32. package/src/api/clients/labels/labels.ts +56 -0
  33. package/src/api/clients/lists/blacklists.ts +118 -0
  34. package/src/api/clients/media/media.ts +120 -0
  35. package/src/api/clients/object/object.ts +114 -0
  36. package/src/api/clients/queues/defaults/processing.ts +14 -0
  37. package/src/api/clients/queues/queues.ts +238 -0
  38. package/src/api/clients/quickReplies/quickReplies.ts +117 -0
  39. package/src/api/clients/roles/roles.ts +202 -0
  40. package/src/api/clients/skills/skills.ts +112 -0
  41. package/src/api/clients/slaConditions/slaConditions.ts +165 -0
  42. package/src/api/clients/slas/slas.ts +118 -0
  43. package/src/api/clients/teams/teams.ts +144 -0
  44. package/src/api/clients/users/__tests__/users.spec.ts +265 -0
  45. package/src/api/clients/users/users.ts +230 -0
  46. package/src/api/clients/wtTypes/_shared/utils/sortDynamicFields.ts +21 -0
  47. package/src/api/clients/wtTypes/sysTypes/sysTypes.ts +64 -0
  48. package/src/api/clients/wtTypes/typeExtensions/typeExtensions.ts +122 -0
  49. package/src/api/clients//321/201ontacts/contactChatMessagesHistory.ts +98 -0
  50. package/src/api/clients//321/201ontacts/contacts.ts +339 -0
  51. package/src/api/clients//321/201ontacts/enums/ContactsSearchMode.ts +9 -0
  52. package/src/api/clients//321/201ontacts/index.ts +5 -0
  53. package/src/api/defaults/getDefaultGetListResponse/getDefaultGetListResponse.ts +6 -0
  54. package/src/api/defaults/getDefaultGetParams/getDefaultGetParams.ts +6 -0
  55. package/src/api/defaults/getDefaultInstance/getDefaultInstance.ts +21 -0
  56. package/src/api/defaults/getDefaultOpenAPIConfig/getDefaultOpenAPIConfig.ts +10 -0
  57. package/src/api/defaults/index.ts +11 -0
  58. package/src/api/index.ts +6 -0
  59. package/src/api/interceptors/index.ts +3 -0
  60. package/src/api/interceptors/request/index.ts +2 -0
  61. package/src/api/interceptors/request/updateToken.interceptor.ts +10 -0
  62. package/src/api/interceptors/response/handleUnauthorized.interceptor.ts +12 -0
  63. package/src/api/interceptors/response/index.ts +2 -0
  64. package/src/api/transformers/addQueryParamsToUrl/addQueryParamsToUrl.transformer.ts +19 -0
  65. package/src/api/transformers/applyTransform.ts +17 -0
  66. package/src/api/transformers/camelToSnake/camelToSnake.transformer.ts +5 -0
  67. package/src/api/transformers/generateUrl/generateUrl.transformer.ts +13 -0
  68. package/src/api/transformers/index.ts +28 -0
  69. package/src/api/transformers/log/log.transformer.ts +6 -0
  70. package/src/api/transformers/merge/merge.transformer.ts +8 -0
  71. package/src/api/transformers/mergeEach/mergeEach.transformer.ts +8 -0
  72. package/src/api/transformers/notify/notify.transformer.ts +39 -0
  73. package/src/api/transformers/sanitize/sanitize.transformer.ts +12 -0
  74. package/src/api/transformers/skipIf/skipIf.ts +11 -0
  75. package/src/api/transformers/snakeToCamel/snakeToCamel.transformer.ts +5 -0
  76. package/src/api/transformers/starToSearch/starToSearch.transformer.ts +15 -0
  77. package/src/gen/_docs/html/assets/navigation.js +1 -1
  78. package/src/gen/_docs/html/assets/search.js +1 -1
  79. package/src/gen/_docs/html/interfaces/_models_webitelCasesInputSource.WebitelCasesInputSource.html +0 -1
  80. package/src/gen/_docs/html/interfaces/_models_webitelCasesSource.WebitelCasesSource.html +5 -6
  81. package/src/gen/_docs/html/modules/index.html +1 -1
  82. package/src/gen/_docs/html/modules/sources_sources.zod.gen.html +7 -7
  83. package/src/gen/_docs/html/types/_models_createCaseParams.CreateCaseParams.html +9 -3
  84. package/src/gen/_docs/html/types/_models_updateCase2Params.UpdateCase2Params.html +8 -3
  85. package/src/gen/_docs/html/types/_models_updateCaseParams.UpdateCaseParams.html +8 -3
  86. package/src/gen/_docs/html/variables/cases_cases.zod.gen.createCaseQueryParams.html +1 -1
  87. package/src/gen/_docs/html/variables/cases_cases.zod.gen.updateCase2QueryParams.html +1 -1
  88. package/src/gen/_docs/html/variables/cases_cases.zod.gen.updateCaseQueryParams.html +1 -1
  89. package/src/gen/_models/createCaseParams.ts +8 -0
  90. package/src/gen/_models/updateCase2Params.ts +8 -0
  91. package/src/gen/_models/updateCaseParams.ts +8 -0
  92. package/src/gen/_models/webitelCasesInputSource.ts +0 -1
  93. package/src/gen/_models/webitelCasesSource.ts +5 -6
  94. package/src/gen/cases/cases.zod.gen.ts +18 -0
  95. package/src/gen/sources/sources.msw.api.gen.ts +6 -6
  96. package/src/gen/sources/sources.zod.gen.ts +0 -27
  97. package/types/api/axios/generateInstance.d.ts +2 -0
  98. package/types/api/axios/index.d.ts +1 -0
  99. package/types/api/clients/_shared/generatePermissionsApi.d.ts +13 -0
  100. package/types/api/clients/agents/agentChats.d.ts +8 -0
  101. package/types/api/clients/agents/agents.d.ts +44 -0
  102. package/types/api/clients/buckets/buckets.d.ts +24 -0
  103. package/types/api/clients/calendars/calendars.d.ts +28 -0
  104. package/types/api/clients/caseCloseReasonGroups/caseCloseReasonGroups.d.ts +24 -0
  105. package/types/api/clients/caseCloseReasons/caseCloseReasons.d.ts +30 -0
  106. package/types/api/clients/casePriorities/casePriorities.d.ts +24 -0
  107. package/types/api/clients/caseServiceCatalogs/serviceCatalogs.d.ts +24 -0
  108. package/types/api/clients/caseServices/services.d.ts +35 -0
  109. package/types/api/clients/caseSources/caseSources.d.ts +24 -0
  110. package/types/api/clients/caseStatusConditions/caseStatusConditions.d.ts +36 -0
  111. package/types/api/clients/caseStatuses/caseStatuses.d.ts +24 -0
  112. package/types/api/clients/catalog/catalog.d.ts +9 -0
  113. package/types/api/clients/chatGateways/chatGateways.d.ts +28 -0
  114. package/types/api/clients/chatGateways/defaults/defaultChatGateway.d.ts +15 -0
  115. package/types/api/clients/chatGateways/defaults/webChatGateway.d.ts +64 -0
  116. package/types/api/clients/chatGateways/enums/WebchatAlternativeChannel.enum.d.ts +8 -0
  117. package/types/api/clients/chatGateways/scripts/generateUri.d.ts +2 -0
  118. package/types/api/clients/communications/communications.d.ts +28 -0
  119. package/types/api/clients/configurations/configurations.d.ts +28 -0
  120. package/types/api/clients/contactGroups/contactGroups.d.ts +47 -0
  121. package/types/api/clients/flows/flow.d.ts +28 -0
  122. package/types/api/clients/gateways/defaults/defaultGateway.d.ts +8 -0
  123. package/types/api/clients/gateways/defaults/registerGateway.d.ts +13 -0
  124. package/types/api/clients/gateways/defaults/trunkingGateway.d.ts +11 -0
  125. package/types/api/clients/gateways/gateways.d.ts +28 -0
  126. package/types/api/clients/index.d.ts +33 -0
  127. package/types/api/clients/labels/labels.d.ts +11 -0
  128. package/types/api/clients/lists/blacklists.d.ts +24 -0
  129. package/types/api/clients/media/media.d.ts +19 -0
  130. package/types/api/clients/object/object.d.ts +11 -0
  131. package/types/api/clients/queues/defaults/processing.d.ts +7 -0
  132. package/types/api/clients/queues/queues.d.ts +32 -0
  133. package/types/api/clients/quickReplies/quickReplies.d.ts +24 -0
  134. package/types/api/clients/roles/roles.d.ts +32 -0
  135. package/types/api/clients/skills/skills.d.ts +24 -0
  136. package/types/api/clients/slaConditions/slaConditions.d.ts +30 -0
  137. package/types/api/clients/slas/slas.d.ts +24 -0
  138. package/types/api/clients/teams/teams.d.ts +24 -0
  139. package/types/api/clients/users/users.d.ts +46 -0
  140. package/types/api/clients/wtTypes/_shared/utils/sortDynamicFields.d.ts +2 -0
  141. package/types/api/clients/wtTypes/sysTypes/sysTypes.d.ts +30 -0
  142. package/types/api/clients/wtTypes/typeExtensions/typeExtensions.d.ts +32 -0
  143. package/types/api/clients//321/201ontacts/contactChatMessagesHistory.d.ts +14 -0
  144. package/types/api/clients//321/201ontacts/contacts.d.ts +23 -0
  145. package/types/api/clients//321/201ontacts/enums/ContactsSearchMode.d.ts +8 -0
  146. package/types/api/clients//321/201ontacts/index.d.ts +4 -0
  147. package/types/api/defaults/getDefaultGetListResponse/getDefaultGetListResponse.d.ts +5 -0
  148. package/types/api/defaults/getDefaultGetParams/getDefaultGetParams.d.ts +8 -0
  149. package/types/api/defaults/getDefaultInstance/getDefaultInstance.d.ts +3 -0
  150. package/types/api/defaults/getDefaultOpenAPIConfig/getDefaultOpenAPIConfig.d.ts +3 -0
  151. package/types/api/defaults/index.d.ts +5 -0
  152. package/types/api/index.d.ts +5 -0
  153. package/types/api/interceptors/index.d.ts +2 -0
  154. package/types/api/interceptors/request/index.d.ts +1 -0
  155. package/types/api/interceptors/request/updateToken.interceptor.d.ts +2 -0
  156. package/types/api/interceptors/response/handleUnauthorized.interceptor.d.ts +2 -0
  157. package/types/api/interceptors/response/index.d.ts +1 -0
  158. package/types/api/transformers/addQueryParamsToUrl/addQueryParamsToUrl.transformer.d.ts +2 -0
  159. package/types/api/transformers/applyTransform.d.ts +5 -0
  160. package/types/api/transformers/camelToSnake/camelToSnake.transformer.d.ts +2 -0
  161. package/types/api/transformers/generateUrl/generateUrl.transformer.d.ts +2 -0
  162. package/types/api/transformers/index.d.ts +14 -0
  163. package/types/api/transformers/log/log.transformer.d.ts +2 -0
  164. package/types/api/transformers/merge/merge.transformer.d.ts +2 -0
  165. package/types/api/transformers/mergeEach/mergeEach.transformer.d.ts +2 -0
  166. package/types/api/transformers/notify/notify.transformer.d.ts +2 -0
  167. package/types/api/transformers/sanitize/sanitize.transformer.d.ts +2 -0
  168. package/types/api/transformers/skipIf/skipIf.d.ts +1 -0
  169. package/types/api/transformers/snakeToCamel/snakeToCamel.transformer.d.ts +2 -0
  170. package/types/api/transformers/starToSearch/starToSearch.transformer.d.ts +2 -0
  171. package/types/gen/_models/configServicePatchConfigBody.d.ts +15 -0
  172. package/types/gen/_models/configServiceUpdateConfigBody.d.ts +14 -0
  173. package/types/gen/_models/engineTriggerObjectType.d.ts +0 -1
  174. package/types/gen/_models/fileServiceSearchFilesChannelItem.d.ts +0 -2
  175. package/types/gen/_models/googlerpcStatus.d.ts +4 -4
  176. package/types/gen/_models/groupsAddContactsToGroupParams.d.ts +12 -0
  177. package/types/gen/_models/loggerDeleteConfigBulkRequest.d.ts +9 -0
  178. package/types/gen/_models/loggerDeleteConfigLogsRequest.d.ts +10 -0
  179. package/types/gen/_models/loggerDeleteConfigLogsResponse.d.ts +9 -0
  180. package/types/gen/_models/readSystemObjectsParams.d.ts +9 -0
  181. package/types/gen/_models/searchConfigObjectItem.d.ts +25 -0
  182. package/types/gen/_models/searchConfigParams.d.ts +18 -0
  183. package/types/gen/_models/searchLogByConfigIdActionItem.d.ts +14 -0
  184. package/types/gen/_models/searchLogByConfigIdParams.d.ts +19 -0
  185. package/types/gen/_models/searchLogByRecordIdActionItem.d.ts +14 -0
  186. package/types/gen/_models/searchLogByRecordIdParams.d.ts +22 -0
  187. package/types/gen/_models/searchLogByUserIdActionItem.d.ts +14 -0
  188. package/types/gen/_models/searchLogByUserIdParams.d.ts +25 -0
  189. package/types/gen/_models/storageUploadFileChannel.d.ts +0 -2
  190. package/types/gen/_models/webitelcasesStatus.d.ts +2 -2
  191. package/types/gen/file-policies-service/file-policies-service.zod.gen.d.ts +0 -18
  192. package/types/gen/file-service/file-service.api.gen.d.ts +1 -3
  193. package/types/gen/file-service/file-service.msw.api.gen.d.ts +1 -3
  194. package/types/gen/file-service/file-service.zod.gen.d.ts +0 -18
  195. package/types/gen/trigger-service/trigger-service.zod.gen.d.ts +0 -9
  196. package/src/defaults/index.ts +0 -2
  197. package/src/gen/_docs/html/variables/sources_sources.zod.gen.createSourceBodyNameRegExp.html +0 -1
  198. package/src/gen/_docs/html/variables/sources_sources.zod.gen.createSourceResponseNameRegExp.html +0 -1
  199. package/src/gen/_docs/html/variables/sources_sources.zod.gen.deleteSourceResponseNameRegExp.html +0 -1
  200. package/src/gen/_docs/html/variables/sources_sources.zod.gen.listSourcesResponseItemsItemNameRegExp.html +0 -1
  201. package/src/gen/_docs/html/variables/sources_sources.zod.gen.locateSourceResponseSourceNameRegExp.html +0 -1
  202. package/src/gen/_docs/html/variables/sources_sources.zod.gen.updateSource2BodyNameRegExp.html +0 -1
  203. package/src/gen/_docs/html/variables/sources_sources.zod.gen.updateSource2ResponseNameRegExp.html +0 -1
  204. package/src/gen/_docs/html/variables/sources_sources.zod.gen.updateSourceBodyNameRegExp.html +0 -1
  205. package/src/gen/_docs/html/variables/sources_sources.zod.gen.updateSourceResponseNameRegExp.html +0 -1
@@ -0,0 +1,230 @@
1
+ import deepCopy from 'deep-copy';
2
+
3
+ import {
4
+ getDefaultGetListResponse,
5
+ getDefaultGetParams,
6
+ getDefaultInstance,
7
+ } from '../../defaults/index';
8
+ import applyTransform, {
9
+ camelToSnake,
10
+ generateUrl,
11
+ merge,
12
+ mergeEach,
13
+ notify,
14
+ sanitize,
15
+ snakeToCamel,
16
+ } from '../../transformers/index';
17
+ import { generatePermissionsApi } from '../_shared/generatePermissionsApi';
18
+
19
+ const instance = getDefaultInstance();
20
+
21
+ const baseUrl = '/users';
22
+ const fieldsToSend = [
23
+ 'name',
24
+ 'username',
25
+ 'password',
26
+ 'extension',
27
+ 'status',
28
+ 'note',
29
+ 'roles',
30
+ 'license',
31
+ 'devices',
32
+ 'device',
33
+ 'profile',
34
+ 'email',
35
+ 'contact',
36
+ 'chatName',
37
+ ];
38
+
39
+ const getUsersList = async (params) => {
40
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
41
+
42
+ const defaultObject = {
43
+ name: '',
44
+ status: '',
45
+ state: true,
46
+ dnd: false,
47
+ };
48
+
49
+ const url = applyTransform(params, [
50
+ merge(getDefaultGetParams()),
51
+ (params) => ({ ...params, q: params.search }),
52
+ sanitize(fieldsToSend),
53
+ camelToSnake(),
54
+ generateUrl(baseUrl),
55
+ ]);
56
+ try {
57
+ const response = await instance.get(url);
58
+ const { items, next } = applyTransform(response.data, [
59
+ snakeToCamel(['profile']),
60
+ merge(getDefaultGetListResponse()),
61
+ ]);
62
+ return {
63
+ items: applyTransform(items, [mergeEach(defaultObject)]),
64
+ next,
65
+ };
66
+ } catch (err) {
67
+ throw applyTransform(err, [notify]);
68
+ }
69
+ };
70
+
71
+ const getUser = async ({ itemId: id }) => {
72
+ const defaultObject = {
73
+ roles: [],
74
+ license: [],
75
+ devices: [],
76
+ device: {},
77
+ variables: [{ key: '', value: '' }],
78
+ };
79
+
80
+ const itemResponseHandler = (item) => {
81
+ const copy = deepCopy(item);
82
+ if (copy.license) {
83
+ copy.license.forEach((item) => {
84
+ item.name = item.prod;
85
+ });
86
+ }
87
+ if (copy.profile) {
88
+ copy.variables = Object.keys(copy.profile).map((key) => ({
89
+ key,
90
+ value: copy.profile[key],
91
+ }));
92
+ } else {
93
+ copy.variables = [{ key: '', value: '' }];
94
+ }
95
+ return copy;
96
+ };
97
+
98
+ const url = `${baseUrl}/${id}`;
99
+
100
+ try {
101
+ const response = await instance.get(url);
102
+ return applyTransform(response.data, [
103
+ snakeToCamel(['profile']),
104
+ merge(defaultObject),
105
+ itemResponseHandler,
106
+ ]);
107
+ } catch (err) {
108
+ throw applyTransform(err, [notify]);
109
+ }
110
+ };
111
+
112
+ const preRequestHandler = (item) => {
113
+ const copy = deepCopy(item);
114
+ if (item.device && !item.device.id) delete copy.device;
115
+
116
+ if (copy.roles) copy.roles.forEach((copy) => delete copy.text);
117
+
118
+ if (copy.devices) copy.devices.forEach((copy) => delete copy.text);
119
+ if (copy.license) {
120
+ copy.license = copy.license.map((copy) => ({ id: copy.id }));
121
+ }
122
+ copy.profile = {};
123
+ if (copy.variables) {
124
+ copy.variables.forEach((variable) => {
125
+ copy.profile[variable.key] = variable.value;
126
+ });
127
+ }
128
+ return copy;
129
+ };
130
+
131
+ const addUser = async ({ itemInstance }) => {
132
+ const item = applyTransform(itemInstance, [
133
+ preRequestHandler,
134
+ sanitize(fieldsToSend),
135
+ camelToSnake(['profile']),
136
+ ]);
137
+ try {
138
+ const response = await instance.post(baseUrl, item);
139
+ return applyTransform(response.data, [snakeToCamel(['profile'])]);
140
+ } catch (err) {
141
+ throw applyTransform(err, [notify]);
142
+ }
143
+ };
144
+
145
+ const updateUser = async ({ itemInstance, itemId: id }) => {
146
+ const item = applyTransform(itemInstance, [
147
+ preRequestHandler,
148
+ sanitize(fieldsToSend),
149
+ camelToSnake(['profile']),
150
+ ]);
151
+
152
+ const url = `${baseUrl}/${id}`;
153
+ try {
154
+ const response = await instance.put(url, item);
155
+ return applyTransform(response.data, [snakeToCamel(['profile'])]);
156
+ } catch (err) {
157
+ throw applyTransform(err, [notify]);
158
+ }
159
+ };
160
+
161
+ const patchUser = async ({ changes, id }) => {
162
+ const body = applyTransform(changes, [
163
+ sanitize(fieldsToSend),
164
+ camelToSnake(['profile']),
165
+ ]);
166
+ const url = `${baseUrl}/${id}`;
167
+ try {
168
+ const response = await instance.patch(url, body);
169
+ return applyTransform(response.data, [snakeToCamel(['profile'])]);
170
+ } catch (err) {
171
+ throw applyTransform(err, [notify]);
172
+ }
173
+ };
174
+
175
+ const patchUserPresence = async ({ changes, id }) => {
176
+ const body = applyTransform(changes, [
177
+ sanitize(fieldsToSend),
178
+ camelToSnake(['profile']),
179
+ ]);
180
+ const url = `${baseUrl}/${id}/presence`;
181
+ try {
182
+ const response = await instance.patch(url, body);
183
+ return applyTransform(response.data, [snakeToCamel(['profile'])]);
184
+ } catch (err) {
185
+ throw applyTransform(err, [notify]);
186
+ }
187
+ };
188
+
189
+ const deleteUser = async ({ id }) => {
190
+ const url = `${baseUrl}/${id}?permanent=true`;
191
+ // permanent=true for complete deletion
192
+ try {
193
+ const response = await instance.delete(url);
194
+ return applyTransform(response.data, []);
195
+ } catch (err) {
196
+ throw applyTransform(err, [notify]);
197
+ }
198
+ };
199
+
200
+ const getUsersLookup = (params) =>
201
+ getUsersList({
202
+ ...params,
203
+ fields: params.fields || ['id', 'name'],
204
+ });
205
+
206
+ const logoutUser = async ({ id }) => {
207
+ const url = `${baseUrl}/${id}/logout`;
208
+ try {
209
+ const response = await instance.post(url, {});
210
+ return applyTransform(response.data, []);
211
+ } catch (err) {
212
+ throw applyTransform(err, [notify]);
213
+ }
214
+ };
215
+
216
+ const UsersAPI = {
217
+ getList: getUsersList,
218
+ get: getUser,
219
+ add: addUser,
220
+ patch: patchUser,
221
+ update: updateUser,
222
+ delete: deleteUser,
223
+ getLookup: getUsersLookup,
224
+ patchUserPresence,
225
+ logoutUser,
226
+
227
+ ...generatePermissionsApi(baseUrl),
228
+ };
229
+
230
+ export default UsersAPI;
@@ -0,0 +1,21 @@
1
+ import deepCopy from 'deep-copy';
2
+ import { WebitelProtoDataStruct } from 'webitel-sdk';
3
+
4
+ export const sortDynamicFields = (
5
+ item: WebitelProtoDataStruct,
6
+ ): WebitelProtoDataStruct => {
7
+ const unSortableFields = item.fields.filter((field) => !field.position);
8
+
9
+ const sortableFields = deepCopy(item.fields)
10
+ .filter((field) => field.position)
11
+ .sort((a, b) => {
12
+ return a.position - b.position;
13
+ });
14
+
15
+ const fields = [...unSortableFields, ...sortableFields];
16
+
17
+ return {
18
+ ...item,
19
+ fields,
20
+ };
21
+ };
@@ -0,0 +1,64 @@
1
+ import {
2
+ getDefaultGetListResponse,
3
+ getDefaultGetParams,
4
+ getDefaultInstance,
5
+ } from '../../../defaults';
6
+ import applyTransform, {
7
+ camelToSnake,
8
+ generateUrl,
9
+ merge,
10
+ notify,
11
+ sanitize,
12
+ starToSearch,
13
+ } from '../../../transformers';
14
+
15
+ const instance = getDefaultInstance();
16
+
17
+ const getSysTypeRecordsList = async ({ path, display, primary, ...params }) => {
18
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id', 'ids'];
19
+
20
+ const url = applyTransform(params, [
21
+ merge(getDefaultGetParams()),
22
+ starToSearch('search'),
23
+ (params) => ({ ...params, q: params.search }),
24
+ (params) => ({
25
+ ...params,
26
+ ids: params.id /* https://webitel.atlassian.net/browse/WTEL-6788 */,
27
+ }),
28
+ sanitize(fieldsToSend),
29
+ camelToSnake(),
30
+ generateUrl(path),
31
+ ]);
32
+ try {
33
+ const response = await instance.get(url);
34
+ const { data, items, next } = applyTransform(response.data, [
35
+ merge(getDefaultGetListResponse()),
36
+ ]);
37
+
38
+ return {
39
+ // Some endpoints return data, some return items so we need to check for both of them
40
+ items:
41
+ applyTransform(data || items, [
42
+ // transformItemsForSelect({ display, primary }),
43
+ ]) ?? [],
44
+ next,
45
+ };
46
+ } catch (err) {
47
+ throw applyTransform(err, [notify]);
48
+ }
49
+ };
50
+
51
+ const getSysTypeRecordsLookup = (params) =>
52
+ getSysTypeRecordsList({
53
+ ...params,
54
+ fields: params.fields || ['id', 'name'],
55
+ });
56
+
57
+ const SysTypesApi = {
58
+ getList: getSysTypeRecordsList,
59
+ getLookup: getSysTypeRecordsLookup,
60
+ };
61
+
62
+ export { getSysTypeRecordsList, getSysTypeRecordsLookup };
63
+
64
+ export default SysTypesApi;
@@ -0,0 +1,122 @@
1
+ import { ExtensionsApiFactory, WebitelProtoDataStruct } from 'webitel-sdk';
2
+
3
+ import { getDefaultInstance, getDefaultOpenAPIConfig } from '../../../defaults';
4
+ import applyTransform, {
5
+ camelToSnake,
6
+ notify,
7
+ sanitize,
8
+ snakeToCamel,
9
+ } from '../../../transformers';
10
+ import { sortDynamicFields } from '../_shared/utils/sortDynamicFields';
11
+
12
+ const instance = getDefaultInstance();
13
+ const configuration = getDefaultOpenAPIConfig();
14
+
15
+ const typeExtensionsService = ExtensionsApiFactory(configuration, '', instance);
16
+
17
+ const fieldsToSend = ['fields', 'repo', 'path'];
18
+
19
+ const generateIdsFromRepos = (item: WebitelProtoDataStruct) => ({
20
+ ...item,
21
+ id: item.repo,
22
+ });
23
+
24
+ const getTypeExtension = async ({ itemId: typeRepo }) => {
25
+ const createPositionGenerator = () => {
26
+ let position = 1;
27
+ return (item) => (item.readonly ? null : position++);
28
+ };
29
+ const getPosition = createPositionGenerator();
30
+
31
+ const itemResponseHandler = (item) => ({
32
+ ...item,
33
+ fields: item.fields.map((field) => ({
34
+ ...field,
35
+ position: getPosition(field),
36
+ })),
37
+ });
38
+
39
+ try {
40
+ const response = await typeExtensionsService.locateType(typeRepo);
41
+
42
+ return applyTransform(response.data, [
43
+ snakeToCamel(),
44
+ generateIdsFromRepos,
45
+ itemResponseHandler,
46
+ ]);
47
+ } catch {
48
+ return {
49
+ id: typeRepo,
50
+ fields: [],
51
+ isNew: true,
52
+ };
53
+ }
54
+ };
55
+
56
+ const addTypeExtension = async ({ itemInstance, itemId: typeRepo }) => {
57
+ const item = applyTransform(itemInstance, [
58
+ sortDynamicFields,
59
+ camelToSnake(),
60
+ sanitize(fieldsToSend),
61
+ ]);
62
+ try {
63
+ const response = await typeExtensionsService.createType(typeRepo, item);
64
+ return applyTransform(response.data, [
65
+ snakeToCamel(),
66
+ generateIdsFromRepos,
67
+ ]);
68
+ } catch (err) {
69
+ throw applyTransform(err, [notify]);
70
+ }
71
+ };
72
+
73
+ const deleteTypeExtension = async ({ itemId: typeRepo }) => {
74
+ try {
75
+ await typeExtensionsService.deleteType(typeRepo);
76
+ } catch (err) {
77
+ throw applyTransform(err, [notify]);
78
+ }
79
+ };
80
+
81
+ const updateTypeExtension = async ({ itemInstance, itemId: typeRepo }) => {
82
+ if (!itemInstance.fields.length && itemInstance.isNew) {
83
+ return itemInstance;
84
+ } else if (itemInstance.isNew) {
85
+ return addTypeExtension({ itemInstance, itemId: typeRepo });
86
+ }
87
+
88
+ if (!itemInstance.fields.length && !itemInstance.isNew) {
89
+ return deleteTypeExtension({ itemId: typeRepo });
90
+ }
91
+
92
+ const item = applyTransform(itemInstance, [
93
+ sortDynamicFields,
94
+ camelToSnake(),
95
+ sanitize(fieldsToSend),
96
+ ]);
97
+ try {
98
+ const response = await typeExtensionsService.updateType(typeRepo, item);
99
+ return applyTransform(response.data, [
100
+ snakeToCamel(),
101
+ generateIdsFromRepos,
102
+ ]);
103
+ } catch (err) {
104
+ throw applyTransform(err, [notify]);
105
+ }
106
+ };
107
+
108
+ const WtTypeExtensionApi = {
109
+ getList: getTypeExtension,
110
+ add: addTypeExtension,
111
+ update: updateTypeExtension,
112
+ delete: deleteTypeExtension,
113
+ };
114
+
115
+ export {
116
+ addTypeExtension,
117
+ deleteTypeExtension,
118
+ getTypeExtension,
119
+ updateTypeExtension,
120
+ };
121
+
122
+ export default WtTypeExtensionApi;
@@ -0,0 +1,98 @@
1
+ import { ContactsChatCatalogApiFactory } from 'webitel-sdk';
2
+
3
+ import i18n from '../../../locale/i18n';
4
+ import {
5
+ getDefaultGetListResponse,
6
+ getDefaultInstance,
7
+ getDefaultOpenAPIConfig,
8
+ } from '../../defaults/index';
9
+ import applyTransform, {
10
+ merge,
11
+ notify,
12
+ snakeToCamel,
13
+ } from '../../transformers/index';
14
+
15
+ const { t } = i18n.global;
16
+
17
+ const instance = getDefaultInstance();
18
+ const configuration = getDefaultOpenAPIConfig();
19
+
20
+ const contactChatService = new ContactsChatCatalogApiFactory(
21
+ configuration,
22
+ '',
23
+ instance,
24
+ );
25
+
26
+ const getChat = async ({ contactId, chatId }) => {
27
+ const mergeChatMessagesData = ({ messages, peers }) => {
28
+ if (!messages) return [];
29
+ return messages.map(({ from, ...message }) => {
30
+ return {
31
+ ...message,
32
+ peer: peers[from.id - 1],
33
+ };
34
+ });
35
+ };
36
+
37
+ try {
38
+ const response = await contactChatService.getContactChatHistory(
39
+ contactId,
40
+ chatId,
41
+ );
42
+ const { messages, peers } = applyTransform(response.data, [snakeToCamel()]);
43
+ return {
44
+ items: applyTransform({ messages, peers }, [mergeChatMessagesData]),
45
+ peers,
46
+ };
47
+ } catch (err) {
48
+ throw applyTransform(err, [notify]);
49
+ }
50
+ };
51
+
52
+ // all messages from all contacts chats
53
+ const getAllMessages = async (params) => {
54
+ const mergeMessagesData = ({ messages, peers, chats }) => {
55
+ if (!messages) return [];
56
+ return messages.map(({ from, chat, ...message }) => {
57
+ return {
58
+ ...message,
59
+ peer: peers[from.id - 1],
60
+ chat: chats[chat.id - 1],
61
+ };
62
+ });
63
+ };
64
+
65
+ const { contactId, page, size } = params;
66
+
67
+ try {
68
+ const response = await contactChatService.getContactChatHistory2(
69
+ contactId,
70
+ undefined,
71
+ undefined,
72
+ size,
73
+ `${page || 1}`,
74
+ );
75
+ const { messages, peers, chats, next } = applyTransform(response.data, [
76
+ snakeToCamel(),
77
+ merge(getDefaultGetListResponse()),
78
+ ]);
79
+ return {
80
+ items: applyTransform({ messages, peers, chats }, [mergeMessagesData]),
81
+ next,
82
+ };
83
+ } catch (err) {
84
+ throw applyTransform(err, [
85
+ notify(({ callback }) =>
86
+ callback({
87
+ type: 'error',
88
+ text: t('errorNotifications.chatHistoryApi'),
89
+ }),
90
+ ),
91
+ ]);
92
+ }
93
+ };
94
+
95
+ export default {
96
+ getChat,
97
+ getAllMessages,
98
+ };