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') }}
-
+
@@ -69,6 +67,49 @@
/>
+
+ {{ ' ' + $t('or') + ' ' }}
+ {{ ' ' + $t('and') + ' ' }}
+
+
+ {{ ' ' + $t('call to') + ' ' }}
+
+
+ {{ ' ' + $t('call not to') + ' ' }}
+
+
+
+
+ {{ bNumberSet.name }}
+
+
+
+
@@ -188,6 +229,7 @@
step="menu"
:mapping="mapping"
:destination-set="destinationSet"
+ :b-number-set="bNumberSet"
:source-set="sourceSet"
:time-set="timeSet"
:subscriber-id="subscriberId"
@@ -364,6 +406,8 @@ import CscPopupMenuItemDelete from 'components/CscPopupMenuItemDelete'
import CscCfConditionPopupAll from 'components/call-forwarding/CscCfConditionPopupAll'
import CscCfConditionPopupCallFrom from 'components/call-forwarding/CscCfConditionPopupCallFrom'
import CscCfConditionPopupCallNotFrom from 'components/call-forwarding/CscCfConditionPopupCallNotFrom'
+import CscCfConditionPopupCallNotTo from 'components/call-forwarding/CscCfConditionPopupCallNotTo'
+import CscCfConditionPopupCallTo from 'components/call-forwarding/CscCfConditionPopupCallTo'
import CscCfConditionPopupCustom from 'components/call-forwarding/CscCfConditionPopupCustom'
import CscCfConditionPopupDate from 'components/call-forwarding/CscCfConditionPopupDate'
import CscCfConditionPopupDateRange from 'components/call-forwarding/CscCfConditionPopupDateRange'
@@ -383,6 +427,8 @@ export default {
CscCfConditionPopupDateRange,
CscCfConditionPopupCallNotFrom,
CscCfConditionPopupCallFrom,
+ CscCfConditionPopupCallNotTo,
+ CscCfConditionPopupCallTo,
CscCfConditionPopupDate,
CscCfConditionPopupAll,
CscPopupMenuItem,
@@ -399,6 +445,10 @@ export default {
type: Object,
required: true
},
+ bNumberSet: {
+ type: Object,
+ default: undefined
+ },
sourceSet: {
type: Object,
default: undefined
diff --git a/src/components/call-forwarding/CscCfSourceSetSelection.vue b/src/components/call-forwarding/CscCfSourceSetSelection.vue
index 457b9e1d..7fe37fb7 100644
--- a/src/components/call-forwarding/CscCfSourceSetSelection.vue
+++ b/src/components/call-forwarding/CscCfSourceSetSelection.vue
@@ -1,7 +1,7 @@