@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.
- package/dist/ui-sdk.js +1 -1
- package/dist/ui-sdk.umd.cjs +1 -1
- package/package.json +1 -1
- package/src/api/clients/caseCloseReasonGroups/caseCloseReasonGroups.js +130 -0
- package/src/api/clients/caseCloseReasons/caseCloseReasons.js +130 -0
- package/src/api/clients/casePriorities/casePriorities.js +130 -0
- package/src/api/clients/caseServiceCatalogs/service-catalogs.js +198 -0
- package/src/api/clients/caseServices/services.js +174 -0
- package/src/api/clients/caseSources/caseSources.js +138 -0
- package/src/api/clients/caseStatusConditions/caseStatusConditions.js +167 -0
- package/src/api/clients/caseStatuses/caseStatuses.js +121 -0
- package/src/api/clients/contactGroups/contactGroups.js +162 -0
- package/src/api/clients/index.js +16 -0
- package/src/api/clients/slaConditions/slaConditions.js +167 -0
- package/src/api/clients/slas/slas.js +129 -0
- package/src/locale/en/en.js +104 -30
- package/src/locale/ru/ru.js +105 -31
- package/src/locale/ua/ua.js +105 -31
- package/src/modules/Filters/v2/filters/components/config/dynamic-filter-config-form.vue +3 -2
- package/src/modules/Filters/v2/filters/components/values/_shared/date-time-filter/date-time-filter-value-field.vue +53 -0
- package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-field.vue +74 -0
- package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-preview.vue +40 -0
- package/src/modules/Filters/v2/filters/components/values/assignee/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-field.vue +56 -0
- package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/author/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-field.vue +99 -0
- package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/contact-group/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-field.vue +74 -0
- package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-preview.vue +43 -0
- package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-field.vue +43 -0
- package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-preview.vue +22 -0
- package/src/modules/Filters/v2/filters/components/values/has-file/has-file-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/has-transcription/has-transcription-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/impacted/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-field.vue +56 -0
- package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/index.js +77 -5
- package/src/modules/Filters/v2/filters/components/values/priority-case/config.js +5 -0
- package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-field.vue +57 -0
- package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/rated/rated-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-field.vue +89 -0
- package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-preview.vue +37 -0
- package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/reporter/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-field.vue +56 -0
- package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-field.vue +18 -0
- package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-preview.vue +42 -0
- package/src/modules/Filters/v2/filters/components/values/service-case/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-field.vue +113 -0
- package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-preview.vue +15 -0
- package/src/modules/Filters/v2/filters/components/values/sla/config.js +4 -0
- package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-field.vue +57 -0
- package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/sla-condition/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-field.vue +98 -0
- package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-preview.vue +37 -0
- package/src/modules/Filters/v2/filters/components/values/source-case/config.js +5 -0
- package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-field.vue +57 -0
- package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-preview.vue +32 -0
- package/src/modules/Filters/v2/filters/components/values/status-case/config.js +6 -0
- package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-field.vue +99 -0
- package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-preview.vue +37 -0
- package/src/modules/Filters/v2/filters/components/values/talk-duration/talk-duration-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/values/total-duration/total-duration-filter-value-field.vue +1 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { GroupsApiFactory } 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
|
+
mergeEach,
|
|
13
|
+
notify,
|
|
14
|
+
sanitize,
|
|
15
|
+
snakeToCamel,
|
|
16
|
+
starToSearch,
|
|
17
|
+
} from '../../transformers/index.js';
|
|
18
|
+
import { generatePermissionsApi } from '../_shared/generatePermissionsApi.js';
|
|
19
|
+
|
|
20
|
+
const instance = getDefaultInstance();
|
|
21
|
+
const configuration = getDefaultOpenAPIConfig();
|
|
22
|
+
|
|
23
|
+
const contactGroupsService = new GroupsApiFactory(configuration, '', instance);
|
|
24
|
+
|
|
25
|
+
const baseUrl = '/contacts/groups';
|
|
26
|
+
|
|
27
|
+
const fieldsToSend = [
|
|
28
|
+
'name',
|
|
29
|
+
'description',
|
|
30
|
+
'enabled',
|
|
31
|
+
'type',
|
|
32
|
+
'default_group',
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const getContactGroupsList = async (params) => {
|
|
36
|
+
const fieldsToSend = [
|
|
37
|
+
'page',
|
|
38
|
+
'size',
|
|
39
|
+
'q',
|
|
40
|
+
'sort',
|
|
41
|
+
'fields',
|
|
42
|
+
'type',
|
|
43
|
+
'enabled',
|
|
44
|
+
'id',
|
|
45
|
+
];
|
|
46
|
+
const defaultObject = {
|
|
47
|
+
enabled: false,
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const { page, size, fields, sort, id, q, name, type, enabled } =
|
|
51
|
+
applyTransform(params, [
|
|
52
|
+
merge(getDefaultGetParams()),
|
|
53
|
+
starToSearch('search'),
|
|
54
|
+
(params) => ({ ...params, q: params.search }),
|
|
55
|
+
sanitize(fieldsToSend),
|
|
56
|
+
camelToSnake(),
|
|
57
|
+
]);
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
const response = await contactGroupsService.listGroups(
|
|
61
|
+
page,
|
|
62
|
+
size,
|
|
63
|
+
fields,
|
|
64
|
+
sort,
|
|
65
|
+
id,
|
|
66
|
+
q,
|
|
67
|
+
name,
|
|
68
|
+
type,
|
|
69
|
+
enabled,
|
|
70
|
+
);
|
|
71
|
+
const { items, next } = applyTransform(response.data, [
|
|
72
|
+
merge(getDefaultGetListResponse()),
|
|
73
|
+
]);
|
|
74
|
+
return {
|
|
75
|
+
items: applyTransform(items, [mergeEach(defaultObject)]),
|
|
76
|
+
next,
|
|
77
|
+
};
|
|
78
|
+
} catch (err) {
|
|
79
|
+
throw applyTransform(err, [notify]);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const getContactGroup = async ({ itemId: id }) => {
|
|
84
|
+
const itemResponseHandler = (item) => item.group;
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
const response = await contactGroupsService.locateGroup(id, fieldsToSend);
|
|
88
|
+
return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
|
|
89
|
+
} catch (err) {
|
|
90
|
+
throw applyTransform(err, [notify]);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const addStaticContactGroup = async ({ itemInstance }) => {
|
|
95
|
+
const item = applyTransform(itemInstance, [
|
|
96
|
+
camelToSnake(),
|
|
97
|
+
sanitize(fieldsToSend),
|
|
98
|
+
]);
|
|
99
|
+
try {
|
|
100
|
+
const response = await contactGroupsService.createGroup(item);
|
|
101
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
102
|
+
} catch (err) {
|
|
103
|
+
throw applyTransform(err, [notify]);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const updateStaticContactGroup = async ({ itemInstance, itemId: id }) => {
|
|
108
|
+
const item = applyTransform(itemInstance, [
|
|
109
|
+
camelToSnake(),
|
|
110
|
+
sanitize(fieldsToSend),
|
|
111
|
+
]);
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
const response = await contactGroupsService.updateGroup(id, item);
|
|
115
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
116
|
+
} catch (err) {
|
|
117
|
+
throw applyTransform(err, [notify]);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const patchStaticContactGroup = async ({ id, changes }) => {
|
|
122
|
+
const item = applyTransform(changes, [
|
|
123
|
+
camelToSnake(),
|
|
124
|
+
sanitize(fieldsToSend),
|
|
125
|
+
]);
|
|
126
|
+
|
|
127
|
+
try {
|
|
128
|
+
const response = await contactGroupsService.updateGroup2(id, item);
|
|
129
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
130
|
+
} catch (err) {
|
|
131
|
+
throw applyTransform(err, [notify]);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
const deleteStaticContactGroup = async ({ id }) => {
|
|
136
|
+
try {
|
|
137
|
+
const response = await contactGroupsService.deleteGroup(id);
|
|
138
|
+
return applyTransform(response.data, []);
|
|
139
|
+
} catch (err) {
|
|
140
|
+
throw applyTransform(err, [notify]);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const getLookup = (params) =>
|
|
145
|
+
getContactGroupsList({
|
|
146
|
+
...params,
|
|
147
|
+
fields: params.fields || ['id', 'name'],
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const ContactGroupsAPI = {
|
|
151
|
+
getList: getContactGroupsList,
|
|
152
|
+
get: getContactGroup,
|
|
153
|
+
add: addStaticContactGroup,
|
|
154
|
+
update: updateStaticContactGroup,
|
|
155
|
+
patch: patchStaticContactGroup,
|
|
156
|
+
delete: deleteStaticContactGroup,
|
|
157
|
+
getLookup,
|
|
158
|
+
|
|
159
|
+
...generatePermissionsApi(baseUrl),
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export default ContactGroupsAPI;
|
package/src/api/clients/index.js
CHANGED
|
@@ -15,7 +15,15 @@ import roles from './roles/roles.js';
|
|
|
15
15
|
import skills from './skills/skills.js';
|
|
16
16
|
import teams from './teams/teams.js';
|
|
17
17
|
import users from './users/users.js';
|
|
18
|
+
import caseSources from './caseSources/caseSources.js';
|
|
19
|
+
import casePriorities from './casePriorities/casePriorities.js';
|
|
18
20
|
import { contactChatMessagesHistory, contacts } from './сontacts/index.js';
|
|
21
|
+
import slas from './slas/slas.js';
|
|
22
|
+
import caseCloseReasonGroups from './caseCloseReasonGroups/caseCloseReasonGroups.js';
|
|
23
|
+
import caseCloseReasons from './caseCloseReasons/caseCloseReasons.js';
|
|
24
|
+
import caseStatuses from './caseStatuses/caseStatuses.js';
|
|
25
|
+
import caseStatusConditions from './caseStatusConditions/caseStatusConditions.js';
|
|
26
|
+
import contactGroups from './contactGroups/contactGroups.js';
|
|
19
27
|
|
|
20
28
|
export {
|
|
21
29
|
agents,
|
|
@@ -37,4 +45,12 @@ export {
|
|
|
37
45
|
configurations,
|
|
38
46
|
contacts,
|
|
39
47
|
contactChatMessagesHistory,
|
|
48
|
+
caseSources,
|
|
49
|
+
casePriorities,
|
|
50
|
+
slas,
|
|
51
|
+
caseCloseReasonGroups,
|
|
52
|
+
caseCloseReasons,
|
|
53
|
+
caseStatuses,
|
|
54
|
+
caseStatusConditions,
|
|
55
|
+
contactGroups,
|
|
40
56
|
};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { SLAConditionsApiFactory } 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 slaConditionsService = new SLAConditionsApiFactory(
|
|
22
|
+
configuration,
|
|
23
|
+
'',
|
|
24
|
+
instance,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const fieldsToSend = [
|
|
28
|
+
'name',
|
|
29
|
+
'priorities',
|
|
30
|
+
'sla_id',
|
|
31
|
+
'reaction_time',
|
|
32
|
+
'resolution_time',
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const getConditionsList = async ({ parentId, ...rest }) => {
|
|
36
|
+
const fieldsToSend = [
|
|
37
|
+
'page',
|
|
38
|
+
'size',
|
|
39
|
+
'q',
|
|
40
|
+
'sort',
|
|
41
|
+
'fields',
|
|
42
|
+
'id',
|
|
43
|
+
'slaConditionId',
|
|
44
|
+
'priorityId',
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const {
|
|
48
|
+
page,
|
|
49
|
+
size,
|
|
50
|
+
fields,
|
|
51
|
+
sort,
|
|
52
|
+
id,
|
|
53
|
+
q,
|
|
54
|
+
sla_condition_id: slaConditionId,
|
|
55
|
+
priority_id: priorityId,
|
|
56
|
+
} = applyTransform(rest, [
|
|
57
|
+
merge(getDefaultGetParams()),
|
|
58
|
+
starToSearch('search'),
|
|
59
|
+
(params) => ({ ...params, q: params.search }),
|
|
60
|
+
sanitize(fieldsToSend),
|
|
61
|
+
camelToSnake(),
|
|
62
|
+
]);
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
const response = await slaConditionsService.listSLAConditions(
|
|
66
|
+
parentId,
|
|
67
|
+
page,
|
|
68
|
+
size,
|
|
69
|
+
fields,
|
|
70
|
+
sort,
|
|
71
|
+
id,
|
|
72
|
+
q,
|
|
73
|
+
slaConditionId,
|
|
74
|
+
priorityId,
|
|
75
|
+
);
|
|
76
|
+
const { items, next } = applyTransform(response.data, [
|
|
77
|
+
merge(getDefaultGetListResponse()),
|
|
78
|
+
]);
|
|
79
|
+
return {
|
|
80
|
+
items: applyTransform(items, [snakeToCamel()]),
|
|
81
|
+
next,
|
|
82
|
+
};
|
|
83
|
+
} catch (err) {
|
|
84
|
+
throw applyTransform(err, [notify]);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const getCondition = async ({ parentId, itemId: id }) => {
|
|
89
|
+
const itemResponseHandler = (item) => {
|
|
90
|
+
return item.slaCondition;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
const response = await slaConditionsService.locateSLACondition(
|
|
95
|
+
parentId,
|
|
96
|
+
id,
|
|
97
|
+
fieldsToSend,
|
|
98
|
+
);
|
|
99
|
+
return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
|
|
100
|
+
} catch (err) {
|
|
101
|
+
throw applyTransform(err, [notify]);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const updateCondition = async ({ itemInstance, itemId: id }) => {
|
|
106
|
+
const item = applyTransform(itemInstance, [
|
|
107
|
+
camelToSnake(),
|
|
108
|
+
sanitize(fieldsToSend),
|
|
109
|
+
]);
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const response = await slaConditionsService.updateSLACondition(
|
|
113
|
+
itemInstance.slaId,
|
|
114
|
+
id,
|
|
115
|
+
item,
|
|
116
|
+
);
|
|
117
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
throw applyTransform(err, [notify]);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const addCondition = async ({ itemInstance, parentId }) => {
|
|
124
|
+
const item = applyTransform(itemInstance, [
|
|
125
|
+
camelToSnake(),
|
|
126
|
+
sanitize(fieldsToSend),
|
|
127
|
+
]);
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
const response = await slaConditionsService.createSLACondition(
|
|
131
|
+
parentId,
|
|
132
|
+
item,
|
|
133
|
+
);
|
|
134
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
135
|
+
} catch (err) {
|
|
136
|
+
throw applyTransform(err, [notify]);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
const deleteCondition = async ({ id, parentId }) => {
|
|
141
|
+
try {
|
|
142
|
+
const response = await slaConditionsService.deleteSLACondition(
|
|
143
|
+
parentId,
|
|
144
|
+
id,
|
|
145
|
+
);
|
|
146
|
+
return applyTransform(response.data, []);
|
|
147
|
+
} catch (err) {
|
|
148
|
+
throw applyTransform(err, [notify]);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const getLookup = async (params) =>
|
|
153
|
+
getConditionsList({
|
|
154
|
+
...params,
|
|
155
|
+
fields: params.fields || ['id', 'name'],
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
const SLAConditionsAPI = {
|
|
159
|
+
getList: getConditionsList,
|
|
160
|
+
get: getCondition,
|
|
161
|
+
update: updateCondition,
|
|
162
|
+
delete: deleteCondition,
|
|
163
|
+
add: addCondition,
|
|
164
|
+
getLookup,
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export default SLAConditionsAPI;
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
import { SLAsApiFactory } from 'webitel-sdk';
|
|
16
|
+
|
|
17
|
+
const instance = getDefaultInstance();
|
|
18
|
+
const configuration = getDefaultOpenAPIConfig();
|
|
19
|
+
|
|
20
|
+
const slaService = new SLAsApiFactory(configuration, '', instance);
|
|
21
|
+
|
|
22
|
+
const fieldsToSend = ['name', 'description', 'valid_from', 'valid_to', 'calendar', 'reaction_time', 'resolution_time'];
|
|
23
|
+
|
|
24
|
+
const getSlasList = async (params) => {
|
|
25
|
+
const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
|
|
26
|
+
|
|
27
|
+
const {
|
|
28
|
+
page,
|
|
29
|
+
size,
|
|
30
|
+
fields,
|
|
31
|
+
sort,
|
|
32
|
+
id,
|
|
33
|
+
q,
|
|
34
|
+
} = applyTransform(params, [
|
|
35
|
+
merge(getDefaultGetParams()),
|
|
36
|
+
starToSearch('search'),
|
|
37
|
+
(params) => ({ ...params, q: params.search }),
|
|
38
|
+
sanitize(fieldsToSend),
|
|
39
|
+
camelToSnake(),
|
|
40
|
+
]);
|
|
41
|
+
try {
|
|
42
|
+
const response = await slaService.listSLAs(
|
|
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, []),
|
|
55
|
+
next,
|
|
56
|
+
};
|
|
57
|
+
} catch (err) {
|
|
58
|
+
throw applyTransform(err, [notify]);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const getSla = async ({ itemId: id }) => {
|
|
63
|
+
const itemResponseHandler = (item) => {
|
|
64
|
+
return item.sla;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
try {
|
|
68
|
+
const response = await slaService.locateSLA(id, fieldsToSend);
|
|
69
|
+
return applyTransform(response.data, [
|
|
70
|
+
snakeToCamel(),
|
|
71
|
+
itemResponseHandler,
|
|
72
|
+
]);
|
|
73
|
+
} catch (err) {
|
|
74
|
+
throw applyTransform(err, [notify]);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const addSla = async ({ itemInstance }) => {
|
|
79
|
+
const item = applyTransform(itemInstance, [
|
|
80
|
+
camelToSnake(),
|
|
81
|
+
sanitize(fieldsToSend),
|
|
82
|
+
]);
|
|
83
|
+
try {
|
|
84
|
+
const response = await slaService.createSLA(item);
|
|
85
|
+
return applyTransform(response.data, [
|
|
86
|
+
snakeToCamel()
|
|
87
|
+
]);
|
|
88
|
+
} catch (err) {
|
|
89
|
+
throw applyTransform(err, [notify]);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const updateSla = async ({ itemInstance, itemId: id }) => {
|
|
94
|
+
const item = applyTransform(itemInstance, [
|
|
95
|
+
camelToSnake(),
|
|
96
|
+
sanitize(fieldsToSend)]);
|
|
97
|
+
try {
|
|
98
|
+
const response = await slaService.updateSLA(id, item);
|
|
99
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
100
|
+
} catch (err) {
|
|
101
|
+
throw applyTransform(err, [notify]);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const deleteSla = async ({ id }) => {
|
|
106
|
+
try {
|
|
107
|
+
const response = await slaService.deleteSLA(id);
|
|
108
|
+
return applyTransform(response.data, []);
|
|
109
|
+
} catch (err) {
|
|
110
|
+
throw applyTransform(err, [notify]);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const getSlasLookup = (params) =>
|
|
115
|
+
getSlasList({
|
|
116
|
+
...params,
|
|
117
|
+
fields: params.fields || ['id', 'name'],
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
const SlasAPI = {
|
|
121
|
+
getList: getSlasList,
|
|
122
|
+
getLookup: getSlasLookup,
|
|
123
|
+
get: getSla,
|
|
124
|
+
add: addSla,
|
|
125
|
+
update: updateSla,
|
|
126
|
+
delete: deleteSla,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export default SlasAPI;
|
package/src/locale/en/en.js
CHANGED
|
@@ -80,6 +80,8 @@ export default {
|
|
|
80
80
|
read: 'Read',
|
|
81
81
|
create: 'Create',
|
|
82
82
|
draggable: 'Draggable',
|
|
83
|
+
unassigned: 'Unassigned',
|
|
84
|
+
showUnassigned: 'Show unassigned',
|
|
83
85
|
},
|
|
84
86
|
// yak zhe ya zaebalsya povtoriaty odni i ti sami slova!!!!
|
|
85
87
|
vocabulary: {
|
|
@@ -153,11 +155,11 @@ export default {
|
|
|
153
155
|
hasOption: 'Has option',
|
|
154
156
|
hasRecording: 'Has recording',
|
|
155
157
|
amdResult: 'AMD result',
|
|
156
|
-
evaluation: 'Evaluation',
|
|
157
158
|
ratedBy: 'Rated by',
|
|
158
159
|
talkDuration: 'Talk duration',
|
|
159
160
|
totalDuration: 'Total duration',
|
|
160
161
|
transcription: 'Transcription',
|
|
162
|
+
attachment: 'Attachment | Attachments',
|
|
161
163
|
queue: {
|
|
162
164
|
queue: 'Queue | Queues',
|
|
163
165
|
type: {
|
|
@@ -227,6 +229,24 @@ export default {
|
|
|
227
229
|
[CallDirection.Outbound]: 'Outbound',
|
|
228
230
|
},
|
|
229
231
|
},
|
|
232
|
+
cases: {
|
|
233
|
+
status: 'Status',
|
|
234
|
+
source: 'Source',
|
|
235
|
+
author: 'Author',
|
|
236
|
+
reporter: 'Reporter',
|
|
237
|
+
impacted: 'Impacted',
|
|
238
|
+
assignee: 'Assignee',
|
|
239
|
+
group: 'Group',
|
|
240
|
+
reason: 'Reason | Reasons',
|
|
241
|
+
rating: 'Rating',
|
|
242
|
+
service: 'Service | Services',
|
|
243
|
+
appliedSLA: 'Applied SLA',
|
|
244
|
+
appliedCondition: 'Applied condition',
|
|
245
|
+
reactionTime: 'Reaction time',
|
|
246
|
+
resolutionTime: 'Resolution time',
|
|
247
|
+
actualReactionTime: 'Actual reaction time',
|
|
248
|
+
actualResolutionTime: 'Actual resolution time',
|
|
249
|
+
},
|
|
230
250
|
// describes Webitel FRONTEND applications + their navs
|
|
231
251
|
WebitelApplications: {
|
|
232
252
|
[WebitelApplications.AGENT]: { name: 'Agent Workspace' },
|
|
@@ -478,67 +498,121 @@ export default {
|
|
|
478
498
|
filterLabel: ({ linked }) => {
|
|
479
499
|
return linked('vocabulary.labels');
|
|
480
500
|
},
|
|
481
|
-
|
|
501
|
+
actualReactionTime: ({ linked }) => {
|
|
502
|
+
return linked('cases.actualReactionTime');
|
|
503
|
+
},
|
|
504
|
+
actualResolutionTime: ({ linked }) => {
|
|
505
|
+
return linked('cases.actualResolutionTime');
|
|
506
|
+
},
|
|
507
|
+
agent : ({ linked }) => {
|
|
482
508
|
return linked('objects.agent.agent');
|
|
483
509
|
},
|
|
484
|
-
amdResult: ({ linked }) => {
|
|
510
|
+
amdResult : ({ linked }) => {
|
|
485
511
|
return linked('objects.amdResult');
|
|
486
512
|
},
|
|
487
|
-
|
|
513
|
+
assignee: ({ linked }) => {
|
|
514
|
+
return linked('cases.assignee');
|
|
515
|
+
},
|
|
516
|
+
author: ({ linked }) => {
|
|
517
|
+
return linked('cases.author');
|
|
518
|
+
},
|
|
519
|
+
cause : ({ linked }) => {
|
|
520
|
+
return linked('objects.hangupCause');
|
|
521
|
+
},
|
|
522
|
+
closeReasonGroupsCase: ({ linked }) => {
|
|
523
|
+
return linked('cases.reason');
|
|
524
|
+
},
|
|
525
|
+
contact : ({ linked }) => {
|
|
488
526
|
return linked('vocabulary.contact');
|
|
489
527
|
},
|
|
490
|
-
|
|
528
|
+
contactGroup: ({ linked }) => {
|
|
529
|
+
return linked('cases.group');
|
|
530
|
+
},
|
|
531
|
+
createdAtFrom : ({ linked }) => {
|
|
491
532
|
return linked('reusable.from');
|
|
492
533
|
},
|
|
493
|
-
createdAtTo: ({ linked }) => {
|
|
534
|
+
createdAtTo : ({ linked }) => {
|
|
494
535
|
return linked('reusable.to');
|
|
495
536
|
},
|
|
496
|
-
direction: ({ linked }) => {
|
|
497
|
-
return linked('
|
|
537
|
+
direction : ({ linked }) => {
|
|
538
|
+
return linked('calls.direction');
|
|
498
539
|
},
|
|
499
|
-
|
|
500
|
-
return linked('
|
|
501
|
-
},
|
|
502
|
-
gateway: ({ linked }) => {
|
|
503
|
-
return linked('objects.gateway');
|
|
540
|
+
gateway : ({ linked }) => {
|
|
541
|
+
return linked('vocabulary.gateway');
|
|
504
542
|
},
|
|
505
|
-
grantee: ({ linked }) => {
|
|
543
|
+
grantee : ({ linked }) => {
|
|
506
544
|
return linked('objects.grantee');
|
|
507
545
|
},
|
|
508
|
-
|
|
509
|
-
return linked('objects.
|
|
546
|
+
hasAttachment: ({ linked }) => {
|
|
547
|
+
return linked('objects.attachment');
|
|
548
|
+
},
|
|
549
|
+
hasFile: ({ linked }) => {
|
|
550
|
+
return linked('objects.hasRecording');
|
|
551
|
+
},
|
|
552
|
+
hasTranscription: ({ linked }) => {
|
|
553
|
+
return linked('objects.transcription');
|
|
510
554
|
},
|
|
511
|
-
|
|
555
|
+
impacted: ({ linked }) => {
|
|
556
|
+
return linked('cases.impacted');
|
|
557
|
+
},
|
|
558
|
+
priorityCase: ({ linked }) => {
|
|
559
|
+
return linked('vocabulary.priority');
|
|
560
|
+
},
|
|
561
|
+
queue : ({ linked }) => {
|
|
512
562
|
return linked('objects.queue.queue');
|
|
513
563
|
},
|
|
514
|
-
|
|
564
|
+
rated: ({ linked }) => {
|
|
565
|
+
return linked('objects.rated');
|
|
566
|
+
},
|
|
567
|
+
ratedBy : ({ linked }) => {
|
|
515
568
|
return linked('objects.ratedBy');
|
|
516
569
|
},
|
|
517
|
-
|
|
518
|
-
return linked('
|
|
570
|
+
rating: ({ linked }) => {
|
|
571
|
+
return linked('cases.rating');
|
|
572
|
+
},
|
|
573
|
+
reactionTime: ({ linked }) => {
|
|
574
|
+
return linked('cases.reactionTime');
|
|
575
|
+
},
|
|
576
|
+
reporter: ({ linked }) => {
|
|
577
|
+
return linked('cases.reporter');
|
|
578
|
+
},
|
|
579
|
+
resolutionTime: ({ linked }) => {
|
|
580
|
+
return linked('cases.resolutionTime');
|
|
519
581
|
},
|
|
520
|
-
score: ({ linked }) => {
|
|
582
|
+
score : ({ linked }) => {
|
|
521
583
|
return linked('webitelUI.auditForm.score');
|
|
522
584
|
},
|
|
523
|
-
|
|
585
|
+
serviceCase: ({ linked }) => {
|
|
586
|
+
return linked('cases.service');
|
|
587
|
+
},
|
|
588
|
+
sla: ({ linked }) => {
|
|
589
|
+
return linked('cases.appliedSLA');
|
|
590
|
+
},
|
|
591
|
+
slaCondition: ({ linked }) => {
|
|
592
|
+
return linked('cases.appliedCondition');
|
|
593
|
+
},
|
|
594
|
+
sourceCase: ({ linked }) => {
|
|
595
|
+
return linked('cases.source');
|
|
596
|
+
},
|
|
597
|
+
statusCase: ({ linked }) => {
|
|
598
|
+
return linked('cases.status');
|
|
599
|
+
},
|
|
600
|
+
tag : ({ linked }) => {
|
|
524
601
|
return linked('vocabulary.tag');
|
|
525
602
|
},
|
|
526
|
-
|
|
603
|
+
talkDuration: ({ linked }) => {
|
|
527
604
|
return linked('objects.talkDuration');
|
|
528
605
|
},
|
|
529
|
-
team: ({ linked }) => {
|
|
606
|
+
team : ({ linked }) => {
|
|
530
607
|
return linked('objects.team');
|
|
531
608
|
},
|
|
532
|
-
|
|
609
|
+
totalDuration: ({ linked }) => {
|
|
533
610
|
return linked('objects.totalDuration');
|
|
534
611
|
},
|
|
535
|
-
|
|
536
|
-
return linked('objects.transcription');
|
|
537
|
-
},
|
|
538
|
-
user: ({ linked }) => {
|
|
612
|
+
user : ({ linked }) => {
|
|
539
613
|
return linked('objects.user');
|
|
540
614
|
},
|
|
541
|
-
variable: ({ linked }) => {
|
|
615
|
+
variable : ({ linked }) => {
|
|
542
616
|
return linked('vocabulary.variables');
|
|
543
617
|
},
|
|
544
618
|
},
|