TT#21900 Ngcp-csc CallForwarding > Show the list of existing time periods

Change-Id: Ie6f5b474025fe14e5658aa2ffbb342810f752d57
changes/14/15414/7
Carlo 8 years ago
parent 483bb04351
commit 61130f1cea

@ -41,6 +41,46 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
store.sync();
},
parseTimesetApiToRecords: function(times) {
var retData = [];
var weekDaysMap = {
1: 'Sunday',
2: 'Monday',
3: 'Tuesday',
4: 'Wednesday',
5: 'Thursday',
6: 'Friday',
7: 'Saturday'
};
Ext.each(times, function(timeSlot) {
var days = timeSlot.wday.split('-');
var fromHour = parseInt(timeSlot.hour.split('-')[0]);
var toHour = parseInt(timeSlot.hour.split('-')[1]) || null;
if (days.length > 1) {
var fromDay = parseInt(days[0]);
var toDay = parseInt(days[1]);
while (fromDay < toDay) {
days.push(fromDay.toString())
fromDay++;
}
}
days = Ext.Array.unique(days).sort();
Ext.each(days, function(day) {
retData.push({
day: weekDaysMap[day],
dayArrIndex: day, // needed for sorting
timeFrom: fromHour.toString(),
timeTo: toHour ? toHour.toString() : null
});
});
});
return Ext.Array.sort(retData, this.sortTimeSlots);
},
sortTimeSlots: function(timeSlot1, timeSlot2) {
return timeSlot1.dayArrIndex > timeSlot2.dayArrIndex;
},
cfTimesetStoreLoaded: function(store, data) {
var me = this;
var arrayOfModels = [];
@ -56,16 +96,18 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var timesetId = timeset.id;
me.setVmToTrue(timesetName);
if (/(After|Company)\s(Hours)/.test(timesetName)) {
var times = me.getModelValuesFromTimesData(timeset.times[0]);
Ext.each(times.days, function(weekday) {
var times = me.parseTimesetApiToRecords(timeset.times);
Ext.each(times, function(time) {
var cfModel = Ext.create('NgcpCsc.model.CallForwardDestination', {
id: Ext.id(),
timeset_name: timesetName,
timeset_id: timesetId,
time_from: times.timeFrom,
time_to: times.timeTo,
day: weekday,
closed: false
time_from: time.timeFrom,
time_to: time.timeTo,
day: time.day,
closed: false // TODO: (For PUT/PATCH ticket) decide
// if we should keep this, or solve this
// differently, or not at all
});
arrayOfModels.push(cfModel);
});
@ -110,9 +152,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
});
}
$cf.createSourcesetTabs(sourcesets);
Ext.defer(function(){
Ext.defer(function() {
$cf.populateSourcesetStores(arrayOfModels);
},100)
}, 100)
},
getTimesetFromRoute: function(route) {
@ -129,7 +171,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
getStoreNameFromRoute: function (route) {
getStoreNameFromRoute: function(route) {
switch (route) {
case ('#callforward/always'):
return 'CallForwardAlways';
@ -143,7 +185,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
sortDestinationsetByPriority: function (destinations) {
sortDestinationsetByPriority: function(destinations) {
var sorted = destinations.sort(function(a, b) {
return parseFloat(a.priority) - parseFloat(b.priority);
});
@ -161,7 +203,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}
},
hasMappings: function (mapping) {
hasMappings: function(mapping) {
return mapping.length !== 0;
},
@ -268,7 +310,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
if (data.destination !== 'own phone') {
switch (recordsToSend.length === 0 || !me.hasDestinationWithId(recordsToSend, data.destinationset_id)) {
case true:
// if recordsToSend array is empty or recordsToSend does not already contain current destinationset already
// if recordsToSend array is empty or recordsToSend does not already contain current destinationset already
if (data.timeout) {
recordsToSend.push({
id: data.destinationset_id,
@ -291,8 +333,8 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
break;
case false:
// if destinationset has already been added to recordsToSend, push to the records field for that destinationset,
// building up an array of destination objects to write to API
// if destinationset has already been added to recordsToSend, push to the records field for that destinationset,
// building up an array of destination objects to write to API
recordsToSend.forEach(function(obj, index) {
if (obj.id == data.destinationset_id) {
if (data.timeout) {
@ -366,7 +408,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
return false;
},
cfReLoadStore: function () {
cfReLoadStore: function() {
var me = this;
var vm = this.getViewModel();
var currentRoute = window.location.hash;
@ -376,7 +418,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
cfSourcesetBeforeSync: function (store, options) {
cfSourcesetBeforeSync: function(store, options) {
// Using Ajax request here as we are using different url
// params for PATCH compared to GET
delete options['destroy'];
@ -559,9 +601,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var store = Ext.getStore(moduleName + '-Timeset');
if (store.getCount() === 0) {
Ext.each(models, function(model) {
if (moduleName == 'afterours' && model.get('timeset_name') == 'After Hours') {
if (moduleName == 'afterhours' && model.get('timeset_name') == 'After Hours') {
store.add(model);
} else if (moduleName == 'companyours' && model.get('timeset_name') == 'Company Hours') {
} else if (moduleName == 'companyhours' && model.get('timeset_name') == 'Company Hours') {
store.add(model);
};
});
@ -646,11 +688,11 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
addOwnPhoneToEmptyOnline: function () {
addOwnPhoneToEmptyOnline: function() {
var $cf = this;
var $vm = $cf.getViewModel();
var timeout = $vm.get('cftRingTimeout');
var stores = Ext.data.StoreManager.filterBy(function (item, key) {
var stores = Ext.data.StoreManager.filterBy(function(item, key) {
return (key.indexOf('CallForwardOnline') >= 0);
});
Ext.each(stores.getRange(), function(store) {
@ -765,7 +807,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
Ext.each(models, function(model) {
var tabId = model.get('sourceset_name');
var strippedSourcesetName = tabId.replace(/ /g, '');
if(!stores[strippedSourcesetName]){
if (!stores[strippedSourcesetName]) {
stores[strippedSourcesetName] = [];
}
stores[strippedSourcesetName].push(model);
@ -937,7 +979,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
// setCfuAsType() sets type to cfu for all destinations with given destinationset id, and returns
// the updated store
setCfuAsType: function (store, id) {
setCfuAsType: function(store, id) {
Ext.each(store.getRange(), function(record) {
if (record.get('destinationset_id') === id) {
record.set('type', 'cfu');
@ -946,12 +988,12 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
return store;
},
recordHasStoreAndOwnPhone: function (record) {
recordHasStoreAndOwnPhone: function(record) {
var store = record.store;
return store && record.get('destination') === 'own phone';
},
isLastOnlineDestinationOfId: function (record, store) {
isLastOnlineDestinationOfId: function(record, store) {
if (store.getCount() === 2 && store.getAt(0).get('destination') === "own phone") {
return true;
}
@ -978,7 +1020,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
"sourceset": record.get('sourceset'),
"timeset": record.get('timeset')
});
cftMappings = cftMappings.filter(function( obj ) {
cftMappings = cftMappings.filter(function(obj) {
return obj.destinationset !== record.get('destinationset_name');
});
if (isLastOnlineDestinationOfId) {
@ -1003,7 +1045,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
"path": "/cfu",
"value": cfuMappings
}],
success: function (response) {
success: function(response) {
store.sync();
},
failure: function(response) {
@ -1220,7 +1262,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
});
},
hasOnlyOwnPhone: function (store) {
hasOnlyOwnPhone: function(store) {
if (store.first()) {
return store.getCount() === 1 && store.first().get('destination') === 'own phone';
} else {
@ -1228,7 +1270,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
}
},
storeIsEmpty: function (store) {
storeIsEmpty: function(store) {
return !store.first() || this.hasOnlyOwnPhone(store);
},

Loading…
Cancel
Save