diff --git a/src/api/call-forwarding.js b/src/api/call-forwarding.js index 3b41fa10..38ab204f 100644 --- a/src/api/call-forwarding.js +++ b/src/api/call-forwarding.js @@ -17,6 +17,14 @@ export async function cfLoadMappings (subscriberId) { }) } +export async function cfLoadBNumberSets (subscriberId) { + return getList({ + resource: 'cfbnumbersets', + all: true, + params: (subscriberId) ? { subscriber_id: subscriberId } : {} + }) +} + export async function cfLoadDestinationSets (subscriberId) { return getList({ resource: 'cfdestinationsets', @@ -46,7 +54,8 @@ export async function cfLoadMappingsFull (subscriberId) { cfLoadMappings(subscriberId), cfLoadDestinationSets(), cfLoadSourceSets(), - cfLoadTimeSets() + cfLoadTimeSets(), + cfLoadBNumberSets() ]) } @@ -64,6 +73,60 @@ export async function cfDeleteDestinationSet (id) { }) } +export async function cfCreateBNumberSet (id, payload) { + const bNumbers = [] + payload.numbers.forEach((number) => { + bNumbers.push({ + bnumber: number + }) + }) + try { + const res = await post({ + resource: 'cfbnumbersets', + body: { + name: payload.name, + subscriber_id: id, + is_regex: true, + bnumbers: bNumbers, + mode: payload.mode + } + }) + if (!_.isString(res)) { + return `${res.id}` + } + return res + } catch (e) { + showGlobalError(e) + } +} + +export async function cfDeleteBNumberSet (id) { + return del({ + resource: 'cfbnumbersets', + resourceId: id + }) +} + +export async function cfUpdateBNumberSet (id, payload) { + const bnumbers = [] + payload.numbers.forEach((number) => { + bnumbers.push({ + bnumber: number + }) + }) + return putMinimal({ + resource: 'cfbnumbersets', + resourceId: payload.id, + body: { + name: payload.name, + subscriber_id: id, + is_regex: true, + bnumbers, + mode: payload.mode + } + }) +} + export async function cfCreateSourceSet (id, payload) { const sources = [] payload.numbers.forEach((number) => { diff --git a/src/components/call-forwarding/CscCfBNumberSetSelection.vue b/src/components/call-forwarding/CscCfBNumberSetSelection.vue new file mode 100644 index 00000000..2f30e28b --- /dev/null +++ b/src/components/call-forwarding/CscCfBNumberSetSelection.vue @@ -0,0 +1,71 @@ + + diff --git a/src/components/call-forwarding/CscCfConditionPopupAll.vue b/src/components/call-forwarding/CscCfConditionPopupAll.vue index a7879090..4de7fe8d 100644 --- a/src/components/call-forwarding/CscCfConditionPopupAll.vue +++ b/src/components/call-forwarding/CscCfConditionPopupAll.vue @@ -5,12 +5,67 @@ + + + + import CscCfConditionPopup from 'components/call-forwarding/CscCfConditionPopup' +import CscCfGroupConditionBNumberSetCreate from 'components/call-forwarding/CscCfGroupConditionBNumberSetCreate' +import CscCfGroupConditionBNumberSetSelect from 'components/call-forwarding/CscCfGroupConditionBNumberSetSelect' import CscCfGroupConditionDate from 'components/call-forwarding/CscCfGroupConditionDate' import CscCfGroupConditionDateRange from 'components/call-forwarding/CscCfGroupConditionDateRange' import CscCfGroupConditionMenu from 'components/call-forwarding/CscCfGroupConditionMenu' @@ -138,6 +195,8 @@ export default { CscCfGroupConditionWeekdays, CscCfGroupConditionDateRange, CscCfGroupConditionDate, + CscCfGroupConditionBNumberSetSelect, + CscCfGroupConditionBNumberSetCreate, CscCfGroupConditionSourceSetSelect, CscCfGroupConditionSourceSetCreate, CscCfGroupConditionMenu @@ -155,6 +214,10 @@ export default { type: Object, required: true }, + bNumberSet: { + type: Object, + default: undefined + }, sourceSet: { type: Object, default: undefined diff --git a/src/components/call-forwarding/CscCfConditionPopupCallNotTo.vue b/src/components/call-forwarding/CscCfConditionPopupCallNotTo.vue new file mode 100644 index 00000000..3b3f0bb7 --- /dev/null +++ b/src/components/call-forwarding/CscCfConditionPopupCallNotTo.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/components/call-forwarding/CscCfConditionPopupCallTo.vue b/src/components/call-forwarding/CscCfConditionPopupCallTo.vue new file mode 100644 index 00000000..64d4f909 --- /dev/null +++ b/src/components/call-forwarding/CscCfConditionPopupCallTo.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/components/call-forwarding/CscCfGroup.vue b/src/components/call-forwarding/CscCfGroup.vue index 0246a3f1..a62ac3a3 100644 --- a/src/components/call-forwarding/CscCfGroup.vue +++ b/src/components/call-forwarding/CscCfGroup.vue @@ -9,6 +9,7 @@ :loading="loading" :mapping="mapping" :destination-set="destinationSet" + :b-number-set="bNumberSet" :source-set="sourceSet" :time-set="timeSet" :subscriber-id="subscriberId" @@ -31,6 +32,7 @@ :destination-index="destinationIndex" :mapping="mapping" :destination-set="destinationSet" + :b-number-set="bNumberSet" :source-set="sourceSet" :time-set="timeSet" :subscriber-id="subscriberId" @@ -70,6 +72,10 @@ export default { type: Object, required: true }, + bNumberSet: { + type: Object, + default: undefined + }, sourceSet: { type: Object, default: undefined diff --git a/src/components/call-forwarding/CscCfGroupConditionBNumberSetCreate.vue b/src/components/call-forwarding/CscCfGroupConditionBNumberSetCreate.vue new file mode 100644 index 00000000..26d3ffa0 --- /dev/null +++ b/src/components/call-forwarding/CscCfGroupConditionBNumberSetCreate.vue @@ -0,0 +1,235 @@ + + + diff --git a/src/components/call-forwarding/CscCfGroupConditionBNumberSetSelect.vue b/src/components/call-forwarding/CscCfGroupConditionBNumberSetSelect.vue new file mode 100644 index 00000000..a4161ee3 --- /dev/null +++ b/src/components/call-forwarding/CscCfGroupConditionBNumberSetSelect.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/components/call-forwarding/CscCfGroupConditionMenu.vue b/src/components/call-forwarding/CscCfGroupConditionMenu.vue index c4a63863..3d4cf301 100644 --- a/src/components/call-forwarding/CscCfGroupConditionMenu.vue +++ b/src/components/call-forwarding/CscCfGroupConditionMenu.vue @@ -5,6 +5,22 @@ + + {{ $t('If busy') }} -