- {{ groupTitle }}
+
+ {{ !(groupsCount < 2 && (group.name.includes('timeout') || group.name.includes('unconditional'))) ? groupTitle :"" }}
diff --git a/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue b/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue
index c3357c03..e0c664b7 100644
--- a/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue
+++ b/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue
@@ -32,12 +32,12 @@
}
},
methods: {
- addDestinationsetUnconditional(){
- this.$parent.selectedDestType = "unconditional";
+ async addDestinationsetUnconditional(){
+ await this.$store.dispatch('newCallForward/setSelectedDestType', 'unconditional');
this.$parent.close()
},
- addDestinationsetOffline(){
- this.$parent.selectedDestType = "offline";
+ async addDestinationsetOffline(){
+ await this.$store.dispatch('newCallForward/setSelectedDestType', 'offline');
this.$parent.close()
},
cancel() {
diff --git a/src/locales/en.json b/src/locales/en.json
index 889387a5..1d01d032 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -211,6 +211,10 @@
"recurrenceChangedToast": "Reminder: Recurrence changed to \"{recurrence}\""
},
"newCallForward": {
+ "titles": {
+ "timeoutGroup" : "Else",
+ "offlineGroup" : "If offline"
+ },
"primarNumberEnabled": "All calls go to the primary number",
"primarNumberDisabled": "No call goes to primary number",
"forwardBtnLabel": "Add forwarding",
@@ -224,7 +228,6 @@
"allCallsForwardedTo": "All calls forwarded to",
"cancelDialogTitle": "Delete from {groupName} forwarding",
"cancelDialogText": "You are about to delete {destination} from {groupName} call forwarding",
- "timeoutGroupTitle" : "",
"uncoditionalLabel": "Unconditional",
"offlinelLabel": "If offline"
},
diff --git a/src/store/new-call-forward.js b/src/store/new-call-forward.js
index 81c46fbf..4d3ba434 100644
--- a/src/store/new-call-forward.js
+++ b/src/store/new-call-forward.js
@@ -18,6 +18,10 @@ const ForwardGroup = {
timeout: {
name: 'csc-timeout',
mapping: 'cft'
+ },
+ offline: {
+ name: 'csc-offline',
+ mapping: 'cfo'
}
};
@@ -26,7 +30,8 @@ export default {
state: {
mappings: [],
forwardGroups: [],
- destinationInCreation: false
+ destinationInCreation: false,
+ selectedDestType: null
},
getters: {
primaryNumber(state, getters, rootState, rootGetters) {
@@ -52,6 +57,12 @@ export default {
},
destinationInCreation(state){
return state.destinationInCreation;
+ },
+ selectedDestType(state){
+ return state.selectedDestType;
+ },
+ groupsCount(state){
+ return state.forwardGroups.length;
}
},
mutations: {
@@ -82,10 +93,16 @@ export default {
state.mappings = mappings;
},
loadForwardGroups(state, forwardGroups){
+ if(forwardGroups[0] && (forwardGroups[0].name.includes('unconditional') || forwardGroups[0].name.includes('timeout'))){
+ forwardGroups.push(forwardGroups.shift())
+ }
state.forwardGroups = forwardGroups;
},
setDestinationInCreation(state, isInCreation){
state.destinationInCreation = isInCreation;
+ },
+ setSelectedDestType(state, destType){
+ state.selectedDestType = destType;
}
},
actions: {
@@ -134,22 +151,10 @@ export default {
}
},
- createEmptyForwardGroup(context, groupName){
- const destination = {
- "announcement_id": null,
- "simple_destination": " ",
- "destination": " ",
- "priority": 1,
- "timeout": 5
- };
- context.state.tempForwardGroups.push({
- name: groupName,
- destinations:[destination]
- });
- },
async addForwardGroup(context, data) {
try{
const newForwardGroupId = await addNewDestinationsetWithName(ForwardGroup[data.name] ? ForwardGroup[data.name].name : data.name);
+
const destination = {
"announcement_id": null,
"simple_destination": data.destination || " ",
@@ -183,7 +188,7 @@ export default {
async deleteForwardGroup(context, group) {
try{
const subscriberId = localStorage.getItem('subscriberId');
- const groupMappingId = group.name === 'csc-unconditional' ? 'cfu' : 'cft';
+ const groupMappingId = await context.dispatch('getMappingIdByGroupName', group.name);
await deleteDestinationsetById(group.id);
await addNewMapping({
mappings: [],
@@ -203,8 +208,8 @@ export default {
});
return forwardGroups.length > 0 ? forwardGroups[0] : null;
},
- addTempDestination(context, groupName){
- context.state.forwardGroups.push({
+ addTempGroup(context, groupName){
+ const data = {
id: "temp-" + ForwardGroup[groupName].name,
name: ForwardGroup[groupName].name,
destinations: [{
@@ -214,7 +219,14 @@ export default {
"priority": 1,
"timeout": 5
}]
- });
+ };
+ if(!groupName.includes('timeout') && !groupName.includes('unconditional')){
+ context.state.forwardGroups.unshift(data);
+ }
+ else{
+ context.state.forwardGroups.push(data);
+ }
+
},
async addDestination(context, data){
try{
@@ -258,8 +270,8 @@ export default {
},
async replaceDestinations(context, data){
try{
- let group = context.state.forwardGroups.find((group)=>{
- return group.name === ForwardGroup[data.groupName].name;
+ let group = context.state.forwardGroups.find(($group)=>{
+ return $group.name === ForwardGroup[data.groupName].name;
});
await addDestinationToDestinationset({
id: group.id,
@@ -272,19 +284,22 @@ export default {
},
async removeDestination(context, data){
try{
+
let destinations, group = context.state.forwardGroups.find((group)=>{
return group.id === data.forwardGroupId;
});
+
destinations = group.destinations.filter(($destination) => {
return $destination.destination !== data.destination.destination;
});
+
await addDestinationToDestinationset({
id: group.id,
data: destinations
});
if(destinations.length < 1){
- context.dispatch('deleteForwardGroup', group);
- context.dispatch('loadForwardGroups', group);
+ await context.dispatch('deleteForwardGroup', group);
+ await context.dispatch('loadForwardGroups');
}
}
catch(err){
@@ -347,28 +362,30 @@ export default {
try{
let unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional')
let timeoutGroup = await context.dispatch('getForwardGroupByName', 'timeout');
+
if(noSelfNumber){
if(timeoutGroup && !timeoutGroup.id.toString().includes('temp')){
+ const destinations = [...timeoutGroup.destinations]
await context.dispatch('addForwardGroup', {
name: 'unconditional'
});
await context.dispatch('loadMappings');
await context.dispatch('loadForwardGroups');
- //unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional');
await context.dispatch('replaceDestinations', {
groupName: 'unconditional',
- destinations: timeoutGroup.destinations
+ destinations: destinations
});
await context.dispatch('deleteForwardGroup', timeoutGroup);
-
+ await context.dispatch('loadForwardGroups');
}
else {
- await context.dispatch('addTempDestination', 'temp-unconditional')
+ await context.dispatch('loadForwardGroups');
+ await context.dispatch('addTempGroup', 'unconditional');
}
- await context.dispatch('loadForwardGroups');
}
else{
if(unconditionalGroup && !unconditionalGroup.id.toString().includes('temp')){
+ const destinations = [...unconditionalGroup.destinations]
await context.dispatch('addForwardGroup', {
name: 'timeout'
});
@@ -376,14 +393,18 @@ export default {
await context.dispatch('loadForwardGroups');
await context.dispatch('replaceDestinations', {
groupName: 'timeout',
- destinations: unconditionalGroup.destinations
+ destinations: destinations
});
await context.dispatch('deleteForwardGroup', unconditionalGroup);
+ await context.dispatch('loadForwardGroups');
}
else{
- await context.dispatch('addTempDestination', 'temp-timeout')
+ await context.dispatch('loadForwardGroups');
+ await context.dispatch('addTempGroup', 'timeout');
}
- await context.dispatch('loadForwardGroups');
+
+
+
}
}
catch(err){
@@ -431,6 +452,9 @@ export default {
},
setDestinationInCreation(context, isInCreation){
context.commit('setDestinationInCreation', isInCreation);
+ },
+ setSelectedDestType(context, destType){
+ context.commit('setSelectedDestType', destType);
}
}
};