TT#21848 Ngcp CSC - CallForwarding - Timeset/Timeperiod Creation

Change-Id: Icf5ac61c708dbe91e6d50213377aae5a3cbecfd0
changes/85/15585/3
Carlo 8 years ago
parent 633e070e5b
commit 009905ca07

@ -777,6 +777,9 @@ Ext.define('Ngcp.csc.locales', {
fr: 'CALL FORWARD',
sp: 'CALL FORWARD'
},
add_new_period: {
en: 'ADD NEW PERIOD'
},
time_one: {
en: 'Always',
it: 'Always',

@ -41,15 +41,15 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
store.sync();
},
checkIncompatibleTimeset: function(timeSlot){
checkIncompatibleTimeset: function(timeSlot) {
var mday = timeSlot.mday;
var minute = timeSlot.minute;
var month = timeSlot.month;
var year = timeSlot.year;
return mday || minute || month || year;
return mday || minute || month || year;
},
parseTimesetApiToRecords: function(times, timesetName) {
parseTimesetApiToRecords: function(times, timesetName, timesetId) {
var retData = [];
var me = this;
var vm = me.getViewModel();
@ -67,8 +67,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var fromHour = timeSlot.hour ? parseInt(timeSlot.hour.split('-')[0]) : null;
var toHour = timeSlot.hour ? parseInt(timeSlot.hour.split('-')[1]) : null;
var checkIncompatibleTimeset = me.checkIncompatibleTimeset(timeSlot);
if(checkIncompatibleTimeset){
if (checkIncompatibleTimeset) {
vm.set(me.getTimesetPrexifFromName(timesetName) + '_add_text', '<div class="cf-invalid-period-box">' + Ngcp.csc.locales.callforward.invalid_times[localStorage.getItem('languageSelected')] + '</div>');
vm.set(me.getTimesetPrexifFromName(timesetName) + '_is_invalid', timesetId);
return;
}
if (days.length > 1) {
@ -93,22 +94,22 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
},
sortTimeSlots: function(timeSlot1, timeSlot2) {
switch(true){
switch (true) {
case timeSlot1.dayArrIndex < timeSlot2.dayArrIndex:
return -1;
break;
break;
case timeSlot1.dayArrIndex > timeSlot2.dayArrIndex:
return 1;
break;
break;
default:
return 0;
}
},
unmaskDestinationGrids: function () {
unmaskDestinationGrids: function() {
var stores = this.getStoresByStatus('all');
var moduleName = this.getModuleFromRoute();
Ext.each(stores.keys, function (storeName) {
Ext.each(stores.keys, function(storeName) {
if (storeName.indexOf(moduleName) > -1) {
var grid = Ext.getCmp(storeName);
if (grid && grid.body) {
@ -135,7 +136,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var timesetName = timeset.name;
var timesetId = timeset.id;
if (/(After|Company)\s(Hours)/.test(timesetName)) {
var times = me.parseTimesetApiToRecords(timeset.times, timesetName);
var times = me.parseTimesetApiToRecords(timeset.times, timesetName, timeset.id);
Ext.each(times, function(time) {
var cfModel = Ext.create('NgcpCsc.model.CallForwardDestination', {
id: Ext.id(),
@ -146,18 +147,18 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
day: time.day
});
arrayOfModels.push(cfModel);
me.setVmToTrue(timesetName, true);
me.setVm(timesetName, true);
});
};
});
if (arrayOfModels.length > 0) {
me.populateTimesetStores(arrayOfModels);
}else{
me.setVmToTrue(me.getTimesetFromRoute(currentRoute), false);
} else {
me.setVm(me.getTimesetFromRoute(currentRoute), false);
}
},
setVmToTrue: function(name, exists) {
setVm: function(name, exists) {
var vm = this.getViewModel();
switch (name) {
case 'After Hours':
@ -501,8 +502,54 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
});
return false;
},
createTimesetReq: function(timesetName, subscriberId, store) {
var me = this;
Ext.Ajax.request({
url: '/api/cftimesets/',
method: 'POST',
jsonData: {
name: timesetName,
subscriber_id: subscriberId,
times: [{
wday: '1',
hour: '0'
}] // we need to create a default valid period
},
success: function(response, opts) {
store.load();
}
});
},
createTimeset: function() {
var vm = this.getViewModel();
var me = this;
var currentRoute = window.location.hash;
var timesetName = me.getTimesetFromRoute(currentRoute);
var subscriberId = localStorage.getItem('subscriber_id');
var store = Ext.getStore(me.getModuleFromRoute() + '-Timeset');
switch (true) {
case !!vm.get(me.getTimesetPrexifFromName(timesetName) + '_is_invalid'):
// if timeset is invalid it's deleted and recreated with the same name and no periods
Ext.Ajax.request({
url: '/api/cftimesets/' + vm.get(me.getTimesetPrexifFromName(timesetName) + '_is_invalid'),
method: 'DELETE',
success: function(response, opts) {
vm.set(me.getTimesetPrexifFromName(timesetName) + '_is_invalid', null);
me.createTimesetReq(timesetName, subscriberId, store);
}
});
break;
case !vm.get(me.getTimesetPrexifFromName(timesetName) + '_exists_in_api'):
me.createTimesetReq(timesetName, subscriberId, store);
break
default:
me.setVm(timesetName, true);
}
},
cfTimesetBeforeSync: function(store, options) {
// TODO
delete options['destroy'];
delete options['create'];
delete options['update'];
@ -737,26 +784,26 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
getStoresByStatus: function (status) {
getStoresByStatus: function(status) {
var stores;
switch (status) {
case 'all':
stores = Ext.data.StoreManager.filterBy(function (item, key) {
stores = Ext.data.StoreManager.filterBy(function(item, key) {
return (key.indexOf('CallForward') > -1);
});
break;
case 'online':
stores = Ext.data.StoreManager.filterBy(function (item, key) {
stores = Ext.data.StoreManager.filterBy(function(item, key) {
return (key.indexOf('CallForwardOnline') > -1);
});
break;
case 'busy':
stores = Ext.data.StoreManager.filterBy(function (item, key) {
stores = Ext.data.StoreManager.filterBy(function(item, key) {
return (key.indexOf('CallForwardBusy') > -1);
});
break;
case 'offline':
stores = Ext.data.StoreManager.filterBy(function (item, key) {
stores = Ext.data.StoreManager.filterBy(function(item, key) {
return (key.indexOf('CallForwardOffline') > -1);
});
break;
@ -764,7 +811,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
return stores;
},
addOwnPhoneToEmptyOnline: function () {
addOwnPhoneToEmptyOnline: function() {
var $cf = this;
var $vm = $cf.getViewModel();
var timeout = $vm.get('cftRingTimeout');
@ -1264,29 +1311,6 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
};
},
createNewStandardSet: function(url, name, subscriberId) {
var vm = this.getViewModel();
Ext.Ajax.request({
url: url,
method: 'POST',
jsonData: {
name: name,
subscriber_id: subscriberId
},
success: function(response, opts) {
switch (name) {
case 'After Hours':
vm.set('after_hours_exists_in_api', true);
break;
case 'Company Hours':
vm.set('company_hours_exists_in_api', true);
break;
}
}
});
},
createNewMapping: function(subscriberId, newType, newDestinationsetName, newSourceset, newTimeset) {
Ext.Ajax.request({
url: '/api/cfmappings/' + localStorage.getItem('subscriber_id'),
@ -1432,6 +1456,13 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', {
var storeName = el.id.split('-')[0] + '-Timeset';
var store = Ext.getStore(storeName);
store.sync();
},
addNewPeriod: function(btn) {
var grid = btn.up('[name=timesetCont]').down('grid');
var store = grid.getStore();
var newModel = Ext.create('NgcpCsc.model.CallForwardTimeset');
store.add(newModel);
}
});

@ -16,7 +16,16 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardTimesetGrid', {
items: [{
text: Ngcp.csc.locales.common.day[localStorage.getItem('languageSelected')],
dataIndex: 'day',
flex: 1
xtype: 'widgetcolumn',
editable: true,
flex: 1,
widget: {
xtype: 'combo',
bind: {
value: '{record.day}'
},
store: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
}
}, {
text: Ngcp.csc.locales.common.from[localStorage.getItem('languageSelected')],
dataIndex: 'time_from',
@ -25,6 +34,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardTimesetGrid', {
flex: 1,
widget: {
xtype: 'timefield',
increment: 60,
tooltip: Ngcp.csc.locales.callforward.tooltips.change_time_from[localStorage.getItem('languageSelected')],
bind: {
value: '{record.time_from}'
@ -38,6 +48,7 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardTimesetGrid', {
flex: 1,
widget: {
xtype: 'timefield',
increment: 60,
tooltip: Ngcp.csc.locales.callforward.tooltips.change_time_to[localStorage.getItem('languageSelected')],
bind: {
value: '{record.time_to}'

@ -35,7 +35,8 @@ Ext.define('NgcpCsc.view.pages.callforward.afterhours.Afterhours', {
xtype: 'container',
items: [{
xtype: 'panel',
id: 'collapsePanel-afterHours',
name: 'timesetCont',
id: 'collapsePanel-afterhours',
title: Ngcp.csc.locales.callforward.for_calls_during_after_hours[localStorage.getItem('languageSelected')],
width: '100%',
collapsible: true,
@ -65,23 +66,38 @@ Ext.define('NgcpCsc.view.pages.callforward.afterhours.Afterhours', {
},{
flex: 1,
xtype: 'button',
handler: 'createTimeset',
text: Ngcp.csc.locales.common.create[localStorage.getItem('languageSelected')]
}]
}]
},
callForwardAfterGrid, {
text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')],
xtype: 'button',
cls: 'x-btn-left',
id: 'afterHours-saveButton',
width: 135,
margin: '10 0 10 623',
listeners: {
click: 'saveTimesetGrid'
},
margin: '10 0 10 0',
layout: 'hbox',
width: '100%',
bind: {
hidden: '{!after_hours_exists_in_api}'
}
},
items: [{
flex: 6
},{
flex: 2,
margin: '0 5 0 0',
text: Ngcp.csc.locales.callforward.add_new_period[localStorage.getItem('languageSelected')],
xtype: 'button',
id: 'afterhours-addNewPeriodButton',
listeners: {
click: 'addNewPeriod'
},
}, {
text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')],
xtype: 'button',
cls: 'x-btn-left',
id: 'afterhours-saveButton',
listeners: {
click: 'saveTimesetGrid'
}
}]
}
]
}]

@ -35,7 +35,8 @@ Ext.define('NgcpCsc.view.pages.callforward.companyhours.Companyhours', {
xtype: 'container',
items: [{
xtype: 'panel',
id: 'collapsePanel-companyHours',
name: 'timesetCont',
id: 'collapsePanel-companyhours',
title: Ngcp.csc.locales.callforward.for_calls_during_company_hours[localStorage.getItem('languageSelected')],
width: '100%',
collapsible: true,
@ -65,23 +66,38 @@ Ext.define('NgcpCsc.view.pages.callforward.companyhours.Companyhours', {
},{
flex: 1,
xtype: 'button',
handler: 'createTimeset',
text: Ngcp.csc.locales.common.create[localStorage.getItem('languageSelected')]
}]
}]
},
callForwardCompanyGrid, {
text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')],
xtype: 'button',
id: 'companyHours-saveButton',
cls: 'x-btn-left',
width: 135,
margin: '10 0 10 585',
listeners: {
click: 'saveTimesetGrid'
},
margin: '10 0 10 0',
layout: 'hbox',
width: '100%',
bind: {
hidden: '{!company_hours_exists_in_api}'
}
},
items: [{
flex: 6
},{
flex: 2,
margin: '0 5 0 0',
text: Ngcp.csc.locales.callforward.add_new_period[localStorage.getItem('languageSelected')],
xtype: 'button',
id: 'companyhours-addNewPeriodButton',
listeners: {
click: 'addNewPeriod'
},
}, {
flex: 1,
text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')],
xtype: 'button',
id: 'companyhours-saveButton',
listeners: {
click: 'saveTimesetGrid'
}
}]
}
]
}]

Loading…
Cancel
Save