@webitel/ui-sdk 24.12.121 → 24.12.122

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 (74) hide show
  1. package/dist/ui-sdk.js +1 -1
  2. package/dist/ui-sdk.umd.cjs +1 -1
  3. package/package.json +1 -1
  4. package/src/api/clients/caseCloseReasonGroups/caseCloseReasonGroups.js +130 -0
  5. package/src/api/clients/caseCloseReasons/caseCloseReasons.js +130 -0
  6. package/src/api/clients/casePriorities/casePriorities.js +130 -0
  7. package/src/api/clients/caseServiceCatalogs/service-catalogs.js +198 -0
  8. package/src/api/clients/caseServices/services.js +174 -0
  9. package/src/api/clients/caseSources/caseSources.js +138 -0
  10. package/src/api/clients/caseStatusConditions/caseStatusConditions.js +167 -0
  11. package/src/api/clients/caseStatuses/caseStatuses.js +121 -0
  12. package/src/api/clients/contactGroups/contactGroups.js +162 -0
  13. package/src/api/clients/index.js +16 -0
  14. package/src/api/clients/slaConditions/slaConditions.js +167 -0
  15. package/src/api/clients/slas/slas.js +129 -0
  16. package/src/locale/en/en.js +104 -30
  17. package/src/locale/ru/ru.js +105 -31
  18. package/src/locale/ua/ua.js +105 -31
  19. package/src/modules/Filters/v2/filters/components/config/dynamic-filter-config-form.vue +3 -2
  20. package/src/modules/Filters/v2/filters/components/values/_shared/date-time-filter/date-time-filter-value-field.vue +53 -0
  21. package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-field.vue +18 -0
  22. package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-preview.vue +42 -0
  23. package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-field.vue +18 -0
  24. package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-preview.vue +42 -0
  25. package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-field.vue +74 -0
  26. package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-preview.vue +40 -0
  27. package/src/modules/Filters/v2/filters/components/values/assignee/config.js +4 -0
  28. package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-field.vue +56 -0
  29. package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-preview.vue +32 -0
  30. package/src/modules/Filters/v2/filters/components/values/author/config.js +4 -0
  31. package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-field.vue +99 -0
  32. package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-preview.vue +32 -0
  33. package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/config.js +6 -0
  34. package/src/modules/Filters/v2/filters/components/values/contact-group/config.js +4 -0
  35. package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-field.vue +74 -0
  36. package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-preview.vue +43 -0
  37. package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-field.vue +43 -0
  38. package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-preview.vue +22 -0
  39. package/src/modules/Filters/v2/filters/components/values/has-file/has-file-filter-value-field.vue +1 -1
  40. package/src/modules/Filters/v2/filters/components/values/has-transcription/has-transcription-filter-value-field.vue +1 -1
  41. package/src/modules/Filters/v2/filters/components/values/impacted/config.js +4 -0
  42. package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-field.vue +56 -0
  43. package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-preview.vue +32 -0
  44. package/src/modules/Filters/v2/filters/components/values/index.js +77 -5
  45. package/src/modules/Filters/v2/filters/components/values/priority-case/config.js +5 -0
  46. package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-field.vue +57 -0
  47. package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-preview.vue +32 -0
  48. package/src/modules/Filters/v2/filters/components/values/rated/rated-filter-value-field.vue +1 -1
  49. package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-field.vue +89 -0
  50. package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-preview.vue +37 -0
  51. package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-field.vue +18 -0
  52. package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-preview.vue +42 -0
  53. package/src/modules/Filters/v2/filters/components/values/reporter/config.js +4 -0
  54. package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-field.vue +56 -0
  55. package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-preview.vue +32 -0
  56. package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-field.vue +18 -0
  57. package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-preview.vue +42 -0
  58. package/src/modules/Filters/v2/filters/components/values/service-case/config.js +6 -0
  59. package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-field.vue +113 -0
  60. package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-preview.vue +15 -0
  61. package/src/modules/Filters/v2/filters/components/values/sla/config.js +4 -0
  62. package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-field.vue +57 -0
  63. package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-preview.vue +32 -0
  64. package/src/modules/Filters/v2/filters/components/values/sla-condition/config.js +6 -0
  65. package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-field.vue +98 -0
  66. package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-preview.vue +37 -0
  67. package/src/modules/Filters/v2/filters/components/values/source-case/config.js +5 -0
  68. package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-field.vue +57 -0
  69. package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-preview.vue +32 -0
  70. package/src/modules/Filters/v2/filters/components/values/status-case/config.js +6 -0
  71. package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-field.vue +99 -0
  72. package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-preview.vue +37 -0
  73. package/src/modules/Filters/v2/filters/components/values/talk-duration/talk-duration-filter-value-field.vue +1 -1
  74. package/src/modules/Filters/v2/filters/components/values/total-duration/total-duration-filter-value-field.vue +1 -1
@@ -0,0 +1,174 @@
1
+ import { ServicesApiFactory, WebitelContactsGroupType } from 'webitel-sdk';
2
+
3
+ import {
4
+ getDefaultGetListResponse,
5
+ getDefaultGetParams,
6
+ getDefaultInstance,
7
+ getDefaultOpenAPIConfig,
8
+ } from '../../defaults/index.js';
9
+ import applyTransform, {
10
+ camelToSnake,
11
+ merge,
12
+ notify,
13
+ sanitize,
14
+ snakeToCamel,
15
+ starToSearch,
16
+ } from '../../transformers/index.js';
17
+
18
+ const instance = getDefaultInstance();
19
+ const configuration = getDefaultOpenAPIConfig();
20
+
21
+ const servicesService = new ServicesApiFactory(configuration, '', instance);
22
+
23
+ const fieldsToSend = [
24
+ 'name',
25
+ 'code',
26
+ 'sla',
27
+ 'status',
28
+ 'state',
29
+ 'description',
30
+ 'group',
31
+ 'assignee',
32
+ 'services',
33
+ 'root_id',
34
+ 'catalog_id',
35
+ ];
36
+
37
+ const getServicesList = async ({ rootId, ...rest }) => {
38
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
39
+
40
+ const { page, size, fields, sort, id, q } = applyTransform(rest, [
41
+ merge(getDefaultGetParams()),
42
+ starToSearch('search'),
43
+ (params) => ({ ...params, q: params.search }),
44
+ sanitize(fieldsToSend),
45
+ camelToSnake(),
46
+ ]);
47
+ try {
48
+ const response = await servicesService.listServices(
49
+ page,
50
+ size,
51
+ sort,
52
+ id,
53
+ q,
54
+ rootId,
55
+ undefined,
56
+ fields,
57
+ );
58
+ const { items, next } = applyTransform(response.data, [
59
+ merge(getDefaultGetListResponse()),
60
+ ]);
61
+ return {
62
+ items: applyTransform(items, []),
63
+ next,
64
+ };
65
+ } catch (err) {
66
+ throw applyTransform(err, [notify]);
67
+ }
68
+ };
69
+
70
+ const getService = async ({ itemId: id }) => {
71
+ const fieldsToSend = [
72
+ 'name',
73
+ 'code',
74
+ 'sla',
75
+ 'state',
76
+ 'prefix',
77
+ 'group',
78
+ 'assignee',
79
+ 'description',
80
+ 'catalog_id',
81
+ 'root_id',
82
+ ];
83
+
84
+ const itemResponseHandler = (item) => {
85
+ return item.service;
86
+ };
87
+
88
+ try {
89
+ const response = await servicesService.locateService(id, fieldsToSend);
90
+ return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
91
+ } catch (err) {
92
+ throw applyTransform(err, [notify]);
93
+ }
94
+ };
95
+
96
+ const preRequestHandler = ({ rootId, catalogId }) => {
97
+ return (item) => ({
98
+ ...item,
99
+ assignee:
100
+ item.group?.type === WebitelContactsGroupType.DYNAMIC
101
+ ? {}
102
+ : item.assignee,
103
+ rootId,
104
+ catalogId,
105
+ });
106
+ };
107
+
108
+ const addService = async ({ itemInstance, rootId, catalogId }) => {
109
+ const item = applyTransform(itemInstance, [
110
+ preRequestHandler({ rootId, catalogId }),
111
+ camelToSnake(),
112
+ sanitize(fieldsToSend),
113
+ ]);
114
+
115
+ try {
116
+ const response = await servicesService.createService(item);
117
+ return applyTransform(response.data, [snakeToCamel()]);
118
+ } catch (err) {
119
+ throw applyTransform(err, [notify]);
120
+ }
121
+ };
122
+
123
+ const updateService = async ({
124
+ itemInstance,
125
+ itemId: id,
126
+ rootId,
127
+ catalogId,
128
+ }) => {
129
+ const item = applyTransform(itemInstance, [
130
+ preRequestHandler({ rootId, catalogId }),
131
+ camelToSnake(),
132
+ sanitize(fieldsToSend),
133
+ ]);
134
+
135
+ try {
136
+ const response = await servicesService.updateService(id, item);
137
+ return applyTransform(response.data, [snakeToCamel()]);
138
+ } catch (err) {
139
+ throw applyTransform(err, [notify]);
140
+ }
141
+ };
142
+
143
+ const patchService = async ({ changes, id }) => {
144
+ const body = applyTransform(changes, [
145
+ sanitize(fieldsToSend),
146
+ camelToSnake(),
147
+ ]);
148
+ try {
149
+ const response = await servicesService.updateService2(id, body);
150
+ return applyTransform(response.data, [snakeToCamel()]);
151
+ } catch (err) {
152
+ throw applyTransform(err, [notify]);
153
+ }
154
+ };
155
+
156
+ const deleteService = async ({ id }) => {
157
+ try {
158
+ const response = await servicesService.deleteService(id);
159
+ return applyTransform(response.data, []);
160
+ } catch (err) {
161
+ throw applyTransform(err, [notify]);
162
+ }
163
+ };
164
+
165
+ const ServicesAPI = {
166
+ getList: getServicesList,
167
+ get: getService,
168
+ add: addService,
169
+ update: updateService,
170
+ patch: patchService,
171
+ delete: deleteService,
172
+ };
173
+
174
+ export default ServicesAPI;
@@ -0,0 +1,138 @@
1
+ import {
2
+ getDefaultGetListResponse,
3
+ getDefaultGetParams,
4
+ getDefaultInstance,
5
+ getDefaultOpenAPIConfig,
6
+ } from '../../defaults/index.js';
7
+ import applyTransform, {
8
+ camelToSnake,
9
+ merge,
10
+ notify,
11
+ sanitize,
12
+ snakeToCamel,
13
+ starToSearch,
14
+ } from '../../transformers/index.js';
15
+
16
+ import { SourcesApiFactory } from 'webitel-sdk';
17
+
18
+ const instance = getDefaultInstance();
19
+ const configuration = getDefaultOpenAPIConfig();
20
+
21
+ const sourceService = new SourcesApiFactory(configuration, '', instance);
22
+
23
+ const fieldsToSend = ['name', 'description', 'type'];
24
+
25
+ const getSourcesList = async (params) => {
26
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
27
+
28
+ const listResponseHandler = (items) => {
29
+ return items.map((item) => ({
30
+ ...item,
31
+ type: item.type?.toLowerCase(),
32
+ }));
33
+ };
34
+
35
+ const {
36
+ page,
37
+ size,
38
+ fields,
39
+ sort,
40
+ id,
41
+ q,
42
+ type,
43
+ } = applyTransform(params, [
44
+ merge(getDefaultGetParams()),
45
+ starToSearch('search'),
46
+ (params) => ({ ...params, q: params.search }),
47
+ sanitize(fieldsToSend),
48
+ camelToSnake(),
49
+ ]);
50
+
51
+ try {
52
+ const response = await sourceService.listSources(
53
+ page,
54
+ size,
55
+ fields,
56
+ sort,
57
+ id,
58
+ q,
59
+ type,
60
+ )
61
+ const { items, next } = applyTransform(response.data, [
62
+ merge(getDefaultGetListResponse()),
63
+ ]);
64
+ return {
65
+ items: applyTransform(items, [listResponseHandler]),
66
+ next,
67
+ };
68
+ } catch (err) {
69
+ throw applyTransform(err, [notify]);
70
+ }
71
+ };
72
+
73
+ const getSource = async ({ itemId: id }) => {
74
+ const itemResponseHandler = (item) => item.source;
75
+
76
+ try {
77
+ const response = await sourceService.locateSource(id);
78
+ return applyTransform(response.data, [
79
+ snakeToCamel(),
80
+ itemResponseHandler,
81
+ ]);
82
+ } catch (err) {
83
+ throw applyTransform(err, [notify]);
84
+ }
85
+ };
86
+
87
+ const addSource = async ({ itemInstance }) => {
88
+ const item = applyTransform(itemInstance, [
89
+ sanitize(fieldsToSend),
90
+ camelToSnake(),
91
+ ]);
92
+ try {
93
+ const response = await sourceService.createSource(item);
94
+ return applyTransform(response.data, [
95
+ snakeToCamel()
96
+ ]);
97
+ } catch (err) {
98
+ throw applyTransform(err, [notify]);
99
+ }
100
+ };
101
+
102
+ const updateSource = async ({ itemInstance, itemId: id }) => {
103
+ const item = applyTransform(itemInstance, [
104
+ camelToSnake(),
105
+ sanitize(fieldsToSend)]);
106
+
107
+ try {
108
+ const response = await sourceService.updateSource(id, item);
109
+ return applyTransform(response.data, [snakeToCamel()]);
110
+ } catch (err) {
111
+ throw applyTransform(err, [notify]);
112
+ }
113
+ };
114
+
115
+ const deleteSource = async ({ id }) => {
116
+ try {
117
+ const response = await sourceService.deleteSource(id);
118
+ return applyTransform(response.data, []);
119
+ } catch (err) {
120
+ throw applyTransform(err, [notify]);
121
+ }
122
+ };
123
+
124
+ const getLookup = (params) => getSourcesList({
125
+ ...params,
126
+ fields: params.fields || ['id', 'name', 'type'],
127
+ });
128
+
129
+ const CaseSourcesAPI = {
130
+ getList: getSourcesList,
131
+ get: getSource,
132
+ add: addSource,
133
+ update: updateSource,
134
+ delete: deleteSource,
135
+ getLookup
136
+ }
137
+
138
+ export default CaseSourcesAPI;
@@ -0,0 +1,167 @@
1
+ import { StatusConditionsApiFactory } from 'webitel-sdk';
2
+
3
+ import {
4
+ getDefaultGetListResponse,
5
+ getDefaultGetParams,
6
+ getDefaultInstance,
7
+ getDefaultOpenAPIConfig,
8
+ } from '../../defaults/index.js';
9
+ import applyTransform, {
10
+ camelToSnake,
11
+ merge,
12
+ notify,
13
+ sanitize,
14
+ snakeToCamel,
15
+ starToSearch,
16
+ } from '../../transformers/index.js';
17
+
18
+ const instance = getDefaultInstance();
19
+ const configuration = getDefaultOpenAPIConfig();
20
+
21
+ const statusConditionsService = new StatusConditionsApiFactory(
22
+ configuration,
23
+ '',
24
+ instance,
25
+ );
26
+
27
+ const fieldsToSend = ['name', 'description'];
28
+
29
+ const getStatusConditionsList = async ({ parentId, ...rest }) => {
30
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
31
+
32
+ const { page, size, fields, sort, id, q } = applyTransform(rest, [
33
+ merge(getDefaultGetParams()),
34
+ starToSearch('search'),
35
+ (params) => ({ ...params, q: params.search }),
36
+ sanitize(fieldsToSend),
37
+ camelToSnake(),
38
+ ]);
39
+
40
+ try {
41
+ const response = await statusConditionsService.listStatusConditions(
42
+ parentId,
43
+ page,
44
+ size,
45
+ fields,
46
+ sort,
47
+ id,
48
+ q,
49
+ );
50
+ const { items, next } = applyTransform(response.data, [
51
+ merge(getDefaultGetListResponse()),
52
+ ]);
53
+ return {
54
+ items: applyTransform(items, [snakeToCamel()]),
55
+ next,
56
+ };
57
+ } catch (err) {
58
+ throw applyTransform(err, [notify]);
59
+ }
60
+ };
61
+
62
+ const getStatusCondition = async ({ parentId, itemId: id }) => {
63
+ const itemResponseHandler = (item) => {
64
+ return item.status;
65
+ };
66
+
67
+ try {
68
+ const response = await statusConditionsService.locateStatusCondition(
69
+ parentId,
70
+ id,
71
+ fieldsToSend,
72
+ );
73
+ return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
74
+ } catch (err) {
75
+ throw applyTransform(err, [notify]);
76
+ }
77
+ };
78
+
79
+ const updateStatusCondition = async ({
80
+ itemInstance,
81
+ itemId: id,
82
+ parentId,
83
+ }) => {
84
+ const item = applyTransform(itemInstance, [
85
+ camelToSnake(),
86
+ sanitize(fieldsToSend),
87
+ ]);
88
+
89
+ try {
90
+ const response = await statusConditionsService.updateStatusCondition(
91
+ parentId,
92
+ id,
93
+ item,
94
+ );
95
+ return applyTransform(response.data, [snakeToCamel()]);
96
+ } catch (err) {
97
+ throw applyTransform(err, [notify]);
98
+ }
99
+ };
100
+
101
+ const addStatusCondition = async ({ itemInstance, parentId }) => {
102
+ const item = applyTransform(itemInstance, [
103
+ camelToSnake(),
104
+ sanitize(fieldsToSend),
105
+ ]);
106
+
107
+ try {
108
+ const response = await statusConditionsService.createStatusCondition(
109
+ parentId,
110
+ item,
111
+ );
112
+ return applyTransform(response.data, [snakeToCamel()]);
113
+ } catch (err) {
114
+ throw applyTransform(err, [notify]);
115
+ }
116
+ };
117
+
118
+ const patchStatusCondition = async ({ id, parentId, changes }) => {
119
+ const fieldsToSend = ['name', 'description', 'initial', 'final'];
120
+ const input = applyTransform(changes, [
121
+ camelToSnake(),
122
+ sanitize(fieldsToSend),
123
+ ]);
124
+
125
+ try {
126
+ const response = await statusConditionsService.updateStatusCondition2(
127
+ parentId,
128
+ id,
129
+ input,
130
+ );
131
+ return applyTransform(response.data, []);
132
+ } catch (err) {
133
+ throw applyTransform(err, [notify]);
134
+ }
135
+ };
136
+
137
+ const deleteStatusCondition = async ({ id, parentId }) => {
138
+ try {
139
+ const response = await statusConditionsService.deleteStatusCondition(
140
+ parentId,
141
+ id,
142
+ );
143
+ return applyTransform(response.data, []);
144
+ } catch (err) {
145
+ throw applyTransform(err, [notify]);
146
+ }
147
+ };
148
+
149
+ const getStatusesLookup = (params) =>
150
+ getStatusConditionsList({
151
+ ...params,
152
+ parentId: params.parentId,
153
+ id: params.id,
154
+ fields: params.fields || ['id', 'name'],
155
+ });
156
+
157
+ const CaseStatusConditionsAPI = {
158
+ getList: getStatusConditionsList,
159
+ getLookup: getStatusesLookup,
160
+ get: getStatusCondition,
161
+ update: updateStatusCondition,
162
+ patch: patchStatusCondition,
163
+ delete: deleteStatusCondition,
164
+ add: addStatusCondition,
165
+ };
166
+
167
+ export default CaseStatusConditionsAPI;
@@ -0,0 +1,121 @@
1
+ import { StatusesApiFactory } from 'webitel-sdk';
2
+
3
+ import {
4
+ getDefaultGetListResponse,
5
+ getDefaultGetParams,
6
+ getDefaultInstance,
7
+ getDefaultOpenAPIConfig,
8
+ } from '../../defaults/index.js';
9
+ import applyTransform, {
10
+ camelToSnake,
11
+ merge,
12
+ notify,
13
+ sanitize,
14
+ snakeToCamel,
15
+ starToSearch,
16
+ } from '../../transformers/index.js';
17
+
18
+ const instance = getDefaultInstance();
19
+ const configuration = getDefaultOpenAPIConfig();
20
+
21
+ const statusesService = new StatusesApiFactory(configuration, '', instance);
22
+
23
+ const fieldsToSend = ['name', 'description'];
24
+
25
+ const getStatusesList = async (params) => {
26
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
27
+
28
+ const { page, size, fields, sort, id, q } = applyTransform(params, [
29
+ merge(getDefaultGetParams()),
30
+ starToSearch('search'),
31
+ (params) => ({ ...params, q: params.search }),
32
+ sanitize(fieldsToSend),
33
+ camelToSnake(),
34
+ ]);
35
+ try {
36
+ const response = await statusesService.listStatuses(
37
+ page,
38
+ size,
39
+ fields,
40
+ sort,
41
+ id,
42
+ q,
43
+ );
44
+ const { items, next } = applyTransform(response.data, [
45
+ merge(getDefaultGetListResponse()),
46
+ ]);
47
+ return {
48
+ items: applyTransform(items, []),
49
+ next,
50
+ };
51
+ } catch (err) {
52
+ throw applyTransform(err, [notify]);
53
+ }
54
+ };
55
+
56
+ const getStatus = async ({ itemId: id }) => {
57
+ const itemResponseHandler = (item) => {
58
+ return item.status;
59
+ };
60
+
61
+ try {
62
+ const response = await statusesService.locateStatus(id, fieldsToSend);
63
+ return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
64
+ } catch (err) {
65
+ throw applyTransform(err, [notify]);
66
+ }
67
+ };
68
+
69
+ const addStatus = async ({ itemInstance }) => {
70
+ const item = applyTransform(itemInstance, [
71
+ camelToSnake(),
72
+ sanitize(fieldsToSend),
73
+ ]);
74
+
75
+ try {
76
+ const response = await statusesService.createStatus(item);
77
+ return applyTransform(response.data, [snakeToCamel()]);
78
+ } catch (err) {
79
+ throw applyTransform(err, [notify]);
80
+ }
81
+ };
82
+
83
+ const updateStatus = async ({ itemInstance, itemId: id }) => {
84
+ const item = applyTransform(itemInstance, [
85
+ camelToSnake(),
86
+ sanitize(fieldsToSend),
87
+ ]);
88
+
89
+ try {
90
+ const response = await statusesService.updateStatus(id, item);
91
+ return applyTransform(response.data, [snakeToCamel()]);
92
+ } catch (err) {
93
+ throw applyTransform(err, [notify]);
94
+ }
95
+ };
96
+
97
+ const deleteStatus = async ({ id }) => {
98
+ try {
99
+ const response = await statusesService.deleteStatus(id);
100
+ return applyTransform(response.data, []);
101
+ } catch (err) {
102
+ throw applyTransform(err, [notify]);
103
+ }
104
+ };
105
+
106
+ const getStatusesLookup = async (params) =>
107
+ getStatusesList({
108
+ ...params,
109
+ fields: params.fields || ['id', 'name'],
110
+ });
111
+
112
+ const CaseStatusesApi = {
113
+ getList: getStatusesList,
114
+ get: getStatus,
115
+ update: updateStatus,
116
+ getLookup: getStatusesLookup,
117
+ delete: deleteStatus,
118
+ add: addStatus,
119
+ };
120
+
121
+ export default CaseStatusesApi;