diff --git a/app/utils/locales.js b/app/utils/locales.js index 90dee743..b25769ad 100644 --- a/app/utils/locales.js +++ b/app/utils/locales.js @@ -1050,6 +1050,9 @@ Ext.define('Ngcp.csc.locales', { en: 'Only numbers allowed. Please retry.', it: 'Only numbers allowed. Please retry.' }, + invalid_times: { + en: '
There are invalid time periods in the timeset; allowed fields are Weekday and Hour. Please fix your time periods or reset the timeset by clicking on the Create button.
' + }, tooltips: { change_time_from: { en: 'Change time from', @@ -1367,15 +1370,15 @@ Ext.define('Ngcp.csc.locales', { sp: 'With your 4-digit PIN you may query your voicebox from any telephone.' } }, - contacts:{ - title:{ + contacts: { + title: { en: 'Contacts', it: 'Contacts', de: 'Contacts', fr: 'Contacts', sp: 'Contacts' }, - delete_user:{ + delete_user: { en: 'Do you really want to delete {0} from your Personal Addressbook?', it: 'Do you really want to delete {0} from your Personal Addressbook?', de: 'Do you really want to delete {0} from your Personal Addressbook?', @@ -2107,14 +2110,14 @@ Ext.define('Ngcp.csc.locales', { } }, devices: { - delete_assignment:{ + delete_assignment: { en: 'Do you really want to unassign button {0}?', it: 'Do you really want to unassign button {0}?', de: 'Do you really want to unassign button {0}?', fr: 'Do you really want to unassign button {0}?', sp: 'Do you really want to unassign button {0}?' }, - tooltip:{ + tooltip: { click: { en: 'Click to edit or remove', it: 'Click to edit or remove', diff --git a/classic/sass/src/view/pages/callforward/CallForward.scss b/classic/sass/src/view/pages/callforward/CallForward.scss index 93a55780..48b3389c 100644 --- a/classic/sass/src/view/pages/callforward/CallForward.scss +++ b/classic/sass/src/view/pages/callforward/CallForward.scss @@ -101,3 +101,7 @@ background: #B0FFC5; color: black; } +.cf-invalid-period-box { + padding: 2px; + border: 1px solid red; +} diff --git a/classic/src/view/pages/callforward/CallForwardController.js b/classic/src/view/pages/callforward/CallForwardController.js index b20ce581..f60d87d5 100644 --- a/classic/src/view/pages/callforward/CallForwardController.js +++ b/classic/src/view/pages/callforward/CallForwardController.js @@ -41,8 +41,18 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { store.sync(); }, + checkIncompatibleTimeset: function(timeSlot){ + var mday = timeSlot.mday; + var minute = timeSlot.minute; + var month = timeSlot.month; + var year = timeSlot.year; + return mday || minute || month || year; + }, + parseTimesetApiToRecords: function(times) { var retData = []; + var me = this; + var vm = me.getViewModel(); var weekDaysMap = { 1: 'Sunday', 2: 'Monday', @@ -56,6 +66,11 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { var days = timeSlot.wday.split('-'); 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){ + vm.set(me.getTimesetPrexifFromRoute() + '_add_text', Ngcp.csc.locales.callforward.invalid_times[localStorage.getItem('languageSelected')]); + return; + } if (days.length > 1) { var fromDay = parseInt(days[0]); var toDay = parseInt(days[1]); @@ -87,14 +102,16 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { break; default: return 0; - } }, cfTimesetStoreLoaded: function(store, data) { var me = this; var arrayOfModels = []; + var vm = this.getViewModel(); + var currentRoute = window.location.hash; var timesets; + if (data.getData()._embedded == undefined) { return; } else { @@ -104,7 +121,6 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { Ext.each(timesets, function(timeset) { var timesetName = timeset.name; var timesetId = timeset.id; - me.setVmToTrue(timesetName); if (/(After|Company)\s(Hours)/.test(timesetName)) { var times = me.parseTimesetApiToRecords(timeset.times); Ext.each(times, function(time) { @@ -117,22 +133,25 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { day: time.day }); arrayOfModels.push(cfModel); + me.setVmToTrue(timesetName, true); }); }; }); if (arrayOfModels.length > 0) { me.populateTimesetStores(arrayOfModels); - }; + }else{ + me.setVmToTrue(me.getTimesetFromRoute(currentRoute), false); + } }, - setVmToTrue: function(name) { + setVmToTrue: function(name, exists) { var vm = this.getViewModel(); switch (name) { case 'After Hours': - vm.set('after_hours_exists_in_api', true); + vm.set('after_hours_exists_in_api', exists); break; case 'Company Hours': - vm.set('company_hours_exists_in_api', true); + vm.set('company_hours_exists_in_api', exists); break; }; }, @@ -147,7 +166,6 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { Ext.each(sourcesets, function(sourceset) { var sourcesetName = sourceset.name; var sourcesetId = sourceset.id; - $cf.setVmToTrue(sourcesetName); Ext.each(sourceset.sources, function(sourceEntry) { arrayOfModels.push(Ext.create('NgcpCsc.model.CallForwardDestination', { id: Ext.id(), @@ -178,6 +196,18 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardController', { }; }, + getTimesetPrexifFromRoute: function() { + var currentRoute = window.location.hash; + switch (currentRoute) { + case ('#callforward/afterhours'): + return 'after_hours'; + break; + case ('#callforward/companyhours'): + return 'company_hours'; + break; + }; + }, + getStoreNameFromRoute: function(route) { switch (route) { case ('#callforward/always'): diff --git a/classic/src/view/pages/callforward/CallForwardModel.js b/classic/src/view/pages/callforward/CallForwardModel.js index f35dd465..18c09727 100644 --- a/classic/src/view/pages/callforward/CallForwardModel.js +++ b/classic/src/view/pages/callforward/CallForwardModel.js @@ -33,7 +33,9 @@ Ext.define('NgcpCsc.view.pages.callforward.CallForwardModel', { offline_then_number: '', offline_then_timeout: '10', after_hours_exists_in_api: false, + after_hours_add_text: Ngcp.csc.locales.callforward.no_after_hours_set[localStorage.getItem('languageSelected')], company_hours_exists_in_api: false, + company_hours_add_text: Ngcp.csc.locales.callforward.no_company_hours_set[localStorage.getItem('languageSelected')], last_store_synced: '', cft_ringtimeout: '15', arrayOfDestModels: null, diff --git a/classic/src/view/pages/callforward/afterhours/AfterHours.js b/classic/src/view/pages/callforward/afterhours/AfterHours.js index 44ce289f..a177fa61 100644 --- a/classic/src/view/pages/callforward/afterhours/AfterHours.js +++ b/classic/src/view/pages/callforward/afterhours/AfterHours.js @@ -52,6 +52,7 @@ Ext.define('NgcpCsc.view.pages.callforward.afterhours.Afterhours', { margin: '10 0 10 0', html: Ngcp.csc.locales.callforward.no_after_hours_set[localStorage.getItem('languageSelected')], bind: { + html: '{after_hours_add_text}', hidden: '{after_hours_exists_in_api}' } }, diff --git a/classic/src/view/pages/callforward/companyhours/CompanyHours.js b/classic/src/view/pages/callforward/companyhours/CompanyHours.js index 54dc2ff6..0efc1d69 100644 --- a/classic/src/view/pages/callforward/companyhours/CompanyHours.js +++ b/classic/src/view/pages/callforward/companyhours/CompanyHours.js @@ -50,13 +50,12 @@ Ext.define('NgcpCsc.view.pages.callforward.companyhours.Companyhours', { items: [{ xtype: 'panel', margin: '10 0 10 0', - html: Ngcp.csc.locales.callforward.no_company_hours_set[localStorage.getItem('languageSelected')], bind: { + html: '{company_hours_add_text}', hidden: '{company_hours_exists_in_api}' } }, - callForwardCompanyGrid, - { + callForwardCompanyGrid, { text: Ngcp.csc.locales.common.save_caps[localStorage.getItem('languageSelected')], xtype: 'button', cls: 'x-btn-left',